reactjs - 反应路由器:动态 url id
问题描述
当我点击图片中的链接时,如何实现动态路径?
用户单击链接并转到消息部分,然后单击链接 (Link) 并转到所需的组件。
数据:
const data = [
{
link: 'Link Name 1',
text: 'Text 1',
id: '1'
},
{
link: 'Link Name 2',
text: 'Text 2',
id: '2'
},
{
link: 'Link Name 3',
text: 'Text 3',
id: '3'
}
];
应用程序.js
<Switch>
<Route exact path="/" component={AppHome}/>
<Route exact path="/messages" component={AppMessages}/>
<Route exact path="/messages/chat" component={AppMessageItems}/>
<Route exact path="/messages/chat/:id" component={AppMessageItems}/>
</Switch>
消息.js
const AppMessages = () => {
<ul>
{data.map(function(item, index) {
return (
<li key={index}>
<Link to='/messages/chat'><AppMessageUserList {...item} /></Link>
</li>);
})}
</ul>
}
AppMessageUserList
const AppMessageUserList = ( props ) => {
const {link} = props;
return ( <div> {link} </div> );
}
AppMessageItems.js
const AppMessageItems = () => {
return ( <h1> Hello World </h1> );
}
但是当我尝试此代码时,单击链接时出现错误。
解决方案
将您的代码替换为
// App.js
<Switch>
<Route exact path="/" component={AppHome}/>
<Route exact path="/messages" component={AppMessages}/>
<Route path={["/messages/chat", "/messages/chat/:id"]} component={AppMessageItems}/>
</Switch>
// Messages.js
// Assuming item has id and upon clicking the item should change the url
const AppMessages = () => (
<ul>
{data.map((item, index) =>
(
<li key={item.id}>
<Link to={`/messages/chat/${item.id}`}>
<AppMessageUserList {...item} />
</Link>
</li>
)
}
</ul>
)
// AppMessageItems
const AppMessageItems = (props) => {
if (props.match.params && props.match.params.id) {
// return the selected items
}
// return whatever you wanted to return if nothing is selected
}
注意:不要使用索引作为键
推荐阅读
- domain-driven-design - 领域驱动设计 (DDD):领域事件处理程序——将它们放置在哪里?
- excel - 如何将总和为 100% 的所有变量限制在一行中?
- cordova - 几天后(5-7 天),Cordova 应用程序被杀死/崩溃
- c# - 如何将数据从 Web 服务中的一种方法发送到另一种方法
- python - 如何打印与我发送相同的随机值
- powershell - 通过双击文件运行 PowerShell 脚本
- javascript - 猫鼬:验证错误路径是必需的
- python - 如何在 Python 中使用 Pyglet 从数组中顺序播放视频
- kubernetes - kubernetess 多个部署使用一个代码库但不同的配置(环境变量)
- python - 我无法使用屏幕管理器 Python / Kivy 在特定窗口中进行引用和搜索 ID