javascript - ReactJS React Router 获取 url 中的更改

标签 javascript reactjs react-router-v4 react-router-dom

我知道你可以使用 this.props.match.params 访问 url 中的参数 id。我的问题是如何获取用户可能在 url 中操作的更改? 例如:从 props http://localhost:3000/user/3456653/newPage 中的路由器传递的原始 url

用户填写页面并使用 url 参数 id 例如:http://localhost:3000/user/888888/newPage

有没有办法可以在调用 api 来存储数据之前检查参数是否相同?我正在使用 "react-router-dom": "4.2.2"

最佳答案

您可以比较分配给 Route 的组件的 componentDidUpdate Hook 中的参数,以了解其更改时间。

示例 ( CodeSandbox )

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>
  );
}

关于javascript - ReactJS React Router 获取 url 中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092044/

相关文章:

javascript - 如何更改 JSF 表中的链接颜色

javascript - 如何在 JavaScript 中干净地构造多个异步调用?

javascript - 在 API 请求的客户端应用程序中存储用户 ID

javascript - 在react-router v4中的嵌套路由中看到空白页面

reactjs - react 路由器|私有(private)路由器上的调用功能

javascript - HTML制作菜单展开/折叠

javascript - 仅当用户将元素悬停几秒钟时才显示 div

javascript - 如何解决无法读取react-native上未定义的属性 'push'?

javascript - 如何在React.js中以异步方式加载悬停效果的图像?

javascript - react-router v4 嵌套路由问题