javascript - 如何将浏览器历史记录与组件一起使用?

标签 javascript reactjs

假设我有以下代码:

const [showChild1, setShowChild1] = useState(false)
const [showChild2, setShowChild2] = useState(false)

        <ParentComponent>
          {showChild1 && <Child1 />}
          {showChild1 && <Child2 />}
           ....
      </ParentComponent

假设我正在浏览器中查看 Child2,但我想返回查看 Child1。如何使用浏览器的后退和前进按钮在有条件呈现的组件之间导航?截至目前,当我点击后退按钮时,我被推送到路径 /

最佳答案

您可以将事件监听器添加到全局窗口对象。事件名称为“popstate”,代码示例如下:

  useEffect(() => {
    window.history.pushState(null, null, window.location.pathname);
    window.addEventListener('popstate', yourEvent);
    return () => {
      window.removeEventListener('popstate', yourEvent);  
    };
  }, []);

关于javascript - 如何将浏览器历史记录与组件一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68883737/

相关文章:

javascript - 单元测试无状态组件方法

reactjs - React-Table 中的固定列

javascript - 构建无法使用 vite bundler 进行 react

javascript - Jquery Ajax加载除某个div之外的整个页面

javascript - 目标不是Electron-React-Typescript-Webpack应用程序中的DOM元素

javascript - 使用 Fragment 后,重定向在 Switch 内不起作用

javascript - WebStorm实时模板: how to create an 'export default from' live template/How to get current folder name?

javascript - 根据 props 值设置子数组状态对象

javascript - 减少javascript中的对象数组

javascript - 在 Meteor 中通过 Amazon SNS 向电话号码发送短信