gpt4 book ai didi

javascript - 每当用户单击动态 url ReactJS 时如何渲染到页面?

转载 作者:行者123 更新时间:2023-12-02 21:02:46 25 4
gpt4 key购买 nike

我想要解决的是,每当用户单击动态网址时如何呈现到特定页面?更具体地说,有我的“product_list”api 数据。在“product_list”api数据中,有一个关键的“url”,每当用户单击此“url”时,用户将被重定向到另一个特定的“product_detail”页面。如何将特定的动态url页面实现到特定页面?因此,每当用户单击 url 时,用户都会看到特定的 UI 页面,而不是动态 url 页面。

我可能是reactjs新手。我正在尝试解决这个问题,但我不知道我哪里做错了。如果有人能帮助我解决我想要解决的问题,那就太好了。提前非常感谢您。

//产品列表 api 数据 -->

[
{
"url": "http://localhost:8000/api/p/product01",
"id": 19,
"title": "product01",
"slug": "product01",
"description": "product01descc",
"image": "http://localhost:8000/media/google.com/images/tet0.png",
"price": 1,
"status": true,
"created_on": "2020-04-19T03:45:12Z"
},
{
"url": "http://localhost:8000/api/p/product02",
"id": 20,
"title": "product02",
"slug": "product02",
"description": "product01descc",
"image": "http://localhost:8000/media/google.com/images/tet0.png",
"price": 2,
"status": true,
"created_on": "2020-04-19T03:45:12Z"
}
]


特定产品列表的产品详细信息 api 数据,例如“product-01”。

{
"id": 19,
"title": "product01",
"slug": "product01",
"description": "product01descc",
"image": "http://localhost:8000/media/google.com/images/tet0.png",
"price": 1,
"created_on": "2020-04-19T03:45:12Z",
"status": true,
"color": 1,
"size": 1,
"product_category": []
}


我努力尝试解决这个问题。

./src/productList.js


import React, {Component} from "react";
import Contacts from './productListHook.js';


export default class App extends Component{

state = {
contacts: [

]
}

contactList() {
fetch('http://localhost:8000/api/p_list')
.then(res => res.json())
.then((data) => {
this.setState({ contacts: data })
})
.catch(console.log)
}

render(){
return(

<Contacts contacts={this.state.contacts} />
)
}
}


在此页面中,每当我尝试渲染用户时,当用户单击“标题”时,如下所示。但该页面将用户渲染到 api-detail 页面。显然,这是因为我没有将该 api 详细信息页面实现到用户将看到 UI 详细信息页面的特定页面。如何在reactjs中实现它?

./src/productListHook.js


import React from 'react'

const Contacts = ({ contacts }) => {
return (
{contacts.map((contact) => (
<img src={contact.image} alt="" class="img-fluid" />
<h3> <a href={contact.url}>{contact.title}</a> </h3>

))}
)
};

export default Contacts

最佳答案

解决此问题的另一种方法是添加 <Link /> map 中的组件contacts的功能并将详细信息传递为 props 。另外,您必须设置 Router渲染页面的组件。假设<App />作为你的根组件,你必须用 BrowserRouter 包装这个组件在你的index.js里面文件。这是一个工作sandbox .

//Contacts.js
import React from "react";
import { Link } from "react-router-dom";

const Contacts = ({ contacts }) => {
return (
<div>
{contacts.map((contact) => (
<div key={contact.id>>
<img src={contact.image} alt="" className="img-fluid" />
<h3>
{" "}
<Link
to={{
pathname: `/productdetails/${contact.id}`,
contact: contact,
}}
>
{contact.title}
</Link>
</h3>
</div>
))}
</div>
);
};

export default Contacts;
//App.js
import React from "react";
import { Route, Switch } from "react-router-dom";
import Home from "./Home";
import ProductDetails from "./ProductDetails";

function App() {
return (
<div className="App">
<Switch>
<Route exact path="/" component={Home} />
<Route path="/productdetails/:slug" component={ProductDetails} />
</Switch>
</div>
);
}

export default App;

Home App.js 中的组件将是 App.js在你的问题中。

//ProductDetails.js
import React from "react";
import { useLocation } from "react-router-dom";

function ProductDetails({ location }) {
const { contact } = location;
console.log(contact);
let queryParams= useLocation();
console.log(queryParams)
return (
<div>
<h1>Product Details Page</h1>;
</div>
);
}

export default ProductDetails;

ProductDetails组件,您可以访问queryParams以及 Contacts 传承下来的 Prop 您可以使用该组件发出额外的 API 请求来呈现数据。

关于javascript - 每当用户单击动态 url ReactJS 时如何渲染到页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61301851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com