我想从API中读取要显示的产品。然后,当我按下其中一个显示的产品时,它应该使用url中的产品ID和要在页面上查看的产品详细信息将我路由到一个组件,以获取有关该产品的详细信息。我在这里读取了API中的数据,并详细显示了产品。
class Tshirts extends Component {
constructor(props) {
super(props);
this.state = {
products: [],
};
}
componentDidMount() {
fetch('https://pwathemes.com/demo-api/wp-json/pwacommercepro/products')
.then(results => results.json()).then((products) => {
console.log(products);
this.setState({ products });
});
}
render() {
const list = this.state.products.map(item => ({
id: item.id,
header: item.name,
description: item.price + '$',
image: item.images[0],
}));
return (
<div>
<Bar head="T-Shirts" />
<Dropdown text="SORT BY COST" fluid selection options={sortOptions} className="dropp" />
<Header as="h4" textAlign="center" attached className="hh4" >{list.length} ITEMS </Header>
<Link to="/tdetailed/:id">
<Card.Group items={list} itemsPerRow={2} />
</Link>
</div>
);
}
}
我想通过产品ID添加一个路由链接。如何将详细信息作为其他组件的道具发送?
<代码>
let data = {pathname: '/tdetailed/:id', customKey: 'CustomValue' }
因此,无论组件路由到何处,整个对象都将在对象中提供给它。所以,你需要做的就是
<Link to={data}>...</Link>
并将其作为-
this.props.location.customKey
希望这有帮助;)
您是在询问如何将列表组件拥有的产品道具发送到/t详尽/: id
路由上的详细信息组件,对吗?
不要这样做-这是一种反模式。你把这两条路线联系得太紧密了。考虑以下场景:用户通过直接指向产品详细信息的深层链接到达您的站点,比如说。在这些情况下,用户从未访问过列表页面,也从未从API下载过列表,因此您的应用程序中不存在product 123的数据。
解决方案是让每条路由完全负责从头开始加载所需的数据。因此,呈现/tdetailed/:id
路由的组件需要在组件didmount中获取产品本身的数据。它通过路由器提供的props React从url收集要使用的正确id。
您要做的是将整个对象组链接到一个特定对象。
相反,您应该将Link组件放在Card. Group中,并在映射项目中的对象时使用所需产品的id。我猜您想链接到被单击的产品,在这种情况下,用
<代码>
“/tdetailed/:id”(这应该只在路由组件中指定它是确切路由的一部分的id)
以下是react router的一个示例,介绍如何为受保护的路由添加组件: https://reacttraining.com/react-router/web/example/auth-workflow 我已经尝试在我的Typescript项目中实现这个功能,使用上面的例子作为灵感。 组件/路线 连接器/专用线路 组件/专用路由 错误
我正在使用react、webpack和babel。我无法从URL获取id参数。 我收到以下错误: -GEThttp://localhost:8080/edit/bundle.js404(未找到) -拒绝从http://localhost:8080/edit/bundle.js执行脚本,因为它的MIME类型(text/html)不可执行,并且启用了严格的MIME类型检查。 我的代码 我的URL 谢谢
如果我将路由折叠起来,这样看起来就像: 工作很好。我嵌套的原因是因为我将在“dashboard”下有多个子项,并且希望它们都在URL中以为前缀。
我使用的反应路由器dom版本5.0.1一个简单的反应应用程序,我使用了汇总捆绑,这是我的路由器组件 问题是,它只在localhost:8000/处显示主路由,但当我尝试访问localhost:8000/hello或localhost:8000/登录时,会出现此错误 这是我的rollup.config };
react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击
在我的React项目中,我有: 没有标题的登录组件 问题:我应该如何构建我的路由器从登录页面开始,当我点击登录时,路由器会把我带到仪表板?