reactjs - 使用 react js 路由动态路径 url
问题描述
app.js - 使用 app.js 我得到左边的菜单列表。使用路由我从左侧菜单中选择一个值。
我第一次 使用 this.props.location.pathname获得像http://localhost:3000/Messages/3这样的路径 URL。当我在菜单中单击第二次时,页面没有刷新并且没有获取路径 ex:http://localhost:3000/Messages/4
因为我在左侧菜单中使用动态 json 数据并使用单个路由文件(消息组件)。
通过选择菜单中的一个值,我每次都需要刷新页面。
class App extends Component {
constructor(){
super();
this.state = {
data :[]
}
}
componentDidMount(){
var data =[{"id": 2 ,"name" :"shiva"},{"id": 3 ,"name" :"krishna"},{"id": 5 ,"name" :"ravi"}];
this.setState({data: data});
}
}
render() {
return (
<div className="container">
<div className="col-lg-4">
<div className="container-top">
<div className="col-lg-4 leftmenu-contact-bg">
<div className="ex1">
{this.state.data.map((res,index) => <div className="left-list" key={index}>
<div className="right-content" >
<NavLink to={`/Messages/${res.id}`} activeClassName="nav-link-active" >
<span className="icon-list"><i className="material-icons icon-color">person</i></span><span className="numbers" > {res.name}</span>
</NavLink>
</div>
</div>
)}
</div>
</div>
</div>
</div>
<div className="col-lg-8">
<Switch>
<Route exact path ="/Messages/:id" component={Messages} />
</Switch>
</div>
</div>
);
}
}
Messages.js
import React from "react";
class Messages extends React.Component{
constructor(){
super()
this.state = {
data :[]
}
}
componentDidMount(){
alert(this.props.location.pathname);
}
render(){
return(
<div>
<div className="chat-decription">
</div>
</div>);
}
}
Url path :
http://localhost:3000/Messages/2
http://localhost:3000/Messages/5
解决方案
<Route exact path ="/Messages/:id" component={Message} />
对于这条路线,您的课程应该像
import React from 'react';
class Message extends React.Component {
constructor(props) {
super(props);
}
render () {
return (
<span>Message id is {this.props.params.id}</span>
)
}
}
export default Message;
推荐阅读
- python - 如何拆分串行设备的“键值”输出
- salesforce - 我们如何过滤 salesforce cpq 中的产品选项?
- app-store - 如何下载 WWDC 2019 中提到的传输器应用程序以测试独立的 Apple Watch 应用程序
- android - 您如何将由 AndroidInjector 注入的 android 对象(Service、Activity ...)重新注入其他对象?
- oracle - 过去 30 天的平均值,不包括当前记录(混合日期和基于行的条件)
- raspberry-pi - Raspian 无法启动到 GUI
- tensorflow - 编写模块化 Keras 代码的推荐方法是什么?
- c# - 子属性中的 PropertyChanged
- r - 将网站链接到闪亮框架内的标题
- javascript - 我有一个带有 css 字符串的 json 对象,我想从样式属性中删除反斜杠(仅)而不是所有的反斜杠,如 (\n ,\t ...)