Javascript reactjs react路由器接收url中的更改
我知道您可以使用this.props.match.params访问url中的参数id。我的问题是,您如何识别用户可能在url中操纵的更改? Ex:props中从路由器传递的原始url 用户填写页面,并将url参数id弄乱 例:Javascript reactjs react路由器接收url中的更改,javascript,reactjs,react-router-v4,react-router-dom,Javascript,Reactjs,React Router V4,React Router Dom,我知道您可以使用this.props.match.params访问url中的参数id。我的问题是,您如何识别用户可能在url中操纵的更改? Ex:props中从路由器传递的原始url 用户填写页面,并将url参数id弄乱 例: 在调用api存储数据之前,有没有办法检查参数是否相同?我正在使用“react router dom”:“4.2.2”您可以比较路由所用组件的组件diddupdate钩子中的参数,以确定它何时更改 示例() 类MyComponent扩展组件{ componentDidUpd
在调用api存储数据之前,有没有办法检查参数是否相同?我正在使用“react router dom”:“4.2.2”您可以比较
路由所用组件的组件diddupdate
钩子中的参数,以确定它何时更改
示例()
类MyComponent扩展组件{
componentDidUpdate(prevProps){
const prevPathParameter=prevProps.match.params.pathParameter;
const newPathParameter=this.props.match.params.pathParameter;
if(prevPathParameter!==newPathParameter){
log(“pathParameter已更改!”);
}
}
render(){
返回{this.props.match.params.pathParameter};
}
}
函数App(){
返回(
家
关于
);
}
谢谢您的帮助,但我仍然可以获得与prevPathParameter和const相同的pathParametersnewPathParameter@Christopher在我的回答中的示例中,pathParameter
的值是否相同?这很奇怪。是的,我相信这与从路由器接收道具的组件有关。由于我们从未离开页面,PrevPathParameter等于newPathParameter,因为路由器从未将新的道具传递给组件pathParameter changed我的答案中的示例中清楚地记录了code>,因此pathParameter
已更改。是的,它会更改,但仅当从主页路径页面导航到关于路径页面时才会更改。在我的场景中,我不会导航到另一个页面。我会对表单做一些更改,并保持在同一页上
class MyComponent extends Component {
componentDidUpdate(prevProps) {
const prevPathParameter = prevProps.match.params.pathParameter;
const newPathParameter = this.props.match.params.pathParameter;
if (prevPathParameter !== newPathParameter) {
console.log("pathParameter changed!");
}
}
render() {
return <h1> {this.props.match.params.pathParameter}</h1>;
}
}
function App() {
return (
<Router>
<div>
<Link to="/home">Home</Link>
<Link to="/about">About</Link>
<Route path="/:pathParameter" component={MyComponent} />
</div>
</Router>
);
}