如何在React中使用React Router检测路由变化?

家族

我有一个搜索组件,它对我的​​应用程序是全局的,并在顶部显示搜索结果。用户进行任何形式的导航(例如,单击搜索结果或使用浏览器上的“后退”按钮)后,我要重置搜索:清除结果和搜索输入字段

目前,我正在使用Context;进行处理我有一个SearchContext.Provider广播该resetSearch函数的函数,无论我在哪里处理导航,我都有使用方resetSearch在处理导航之前调用它(我使用useHistory钩子以编程方式进行处理)。

对于浏览器控件上的后退按钮按下,这不起作用(因为这超出了我的控件范围)。

Routes渲染(或进行任何浏览器导航)之前,是否存在可以挂接的中间步骤,以确保resetSearch调用了我的函数?

根据要求,下面是代码:

// App.js
const [query, setQuery] = useState("");
const [results, setResults] = useState([]);

const resetSearch = () => {
    setResults([]);
    setQuery("");
};

<SearchContext.Provider value={{ resetSearch }}>
    // all of my <Route /> components in this block
</SearchContext.Provider>
// BusRoute.js
const { resetSearch } = useContext(SearchContext);

const handleClick = stop => {
    resetSearch();
    history.push(`/stops/${stop}`);
};

return (
    // some other JSX
    <button onClick={() => handleClick(stop.code)}>{stop.name}</button>
);
阿吉特·莎(Ajeet Shah)

您可以听history更改:

useEffect(() => {
  const unlisten = history.listen((location) => {
    console.log('new location: ', location)
    // do your magic things here
    // reset the search: clear the results and the search input field
  })
  return function cleanup() {
    unlisten()
  }
}, [])

您可以在控制全局搜索值的父组件中使用此效果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在React中使用React Router检测路由变化?

来自分类Dev

React-Router-如何在onEnter中使用路由参数?

来自分类Dev

如何在Electron中使用React Router?

来自分类Dev

如何在React Router中使用HistoryLocation?

来自分类Dev

如何在Preact中使用React Router

来自分类Dev

如何在React.net中使用react-router

来自分类Dev

如何在条件和Redux中使用React路由?

来自分类Dev

如何在模型中使用React-Router

来自分类Dev

如何在React-Router的组件中使用参数?

来自分类Dev

如何在 {this.props.children} 中使用 React-router

来自分类Dev

如何在点击处理程序中使用React Router 1.0.x进行客户端路由?

来自分类Dev

如何在React Native / Redux中使用推送路由为NavigationStateUtils创建唯一键?

来自分类Dev

如何在React JS中使用路由从查询字符串中获取数据

来自分类Dev

如何在本地菜单中使用react-native实现路由

来自分类Dev

React-Router V2:如何在回调中使用``替换''功能

来自分类Dev

如何在Electron中使用“ react-router”从组件外部布线?

来自分类Dev

如何在React Router中使用Match对象修复导入错误

来自分类Dev

React Router-如何在路由匹配中约束参数?

来自分类常见问题

如何检测方向变化?

来自分类Dev

如何检测元素的变化

来自分类Dev

React-如何在React Router链接中使innerHtml占据父元素的宽度

来自分类Dev

使用React Router,如何使用路由配置传递组件道具?

来自分类Dev

在这种情况下,如何在带有“精确参数”的嵌套页面中使用React Router?

来自分类Dev

如何使用React-Router防止路由更改

来自分类Dev

如何使用react-router 5正确嵌套多条路由

来自分类Dev

React Router - 如何使用动态路由进行 IndexRedirect、重定向

来自分类Dev

如何使用react-router删除根路由上的尾随/

来自分类Dev

如何使用 react-router-dom 创建动态路由?

来自分类Dev

如何检测是否设置了react-router?

Related 相关文章

  1. 1

    如何在React中使用React Router检测路由变化?

  2. 2

    React-Router-如何在onEnter中使用路由参数?

  3. 3

    如何在Electron中使用React Router?

  4. 4

    如何在React Router中使用HistoryLocation?

  5. 5

    如何在Preact中使用React Router

  6. 6

    如何在React.net中使用react-router

  7. 7

    如何在条件和Redux中使用React路由?

  8. 8

    如何在模型中使用React-Router

  9. 9

    如何在React-Router的组件中使用参数?

  10. 10

    如何在 {this.props.children} 中使用 React-router

  11. 11

    如何在点击处理程序中使用React Router 1.0.x进行客户端路由?

  12. 12

    如何在React Native / Redux中使用推送路由为NavigationStateUtils创建唯一键?

  13. 13

    如何在React JS中使用路由从查询字符串中获取数据

  14. 14

    如何在本地菜单中使用react-native实现路由

  15. 15

    React-Router V2:如何在回调中使用``替换''功能

  16. 16

    如何在Electron中使用“ react-router”从组件外部布线?

  17. 17

    如何在React Router中使用Match对象修复导入错误

  18. 18

    React Router-如何在路由匹配中约束参数?

  19. 19

    如何检测方向变化?

  20. 20

    如何检测元素的变化

  21. 21

    React-如何在React Router链接中使innerHtml占据父元素的宽度

  22. 22

    使用React Router,如何使用路由配置传递组件道具?

  23. 23

    在这种情况下,如何在带有“精确参数”的嵌套页面中使用React Router?

  24. 24

    如何使用React-Router防止路由更改

  25. 25

    如何使用react-router 5正确嵌套多条路由

  26. 26

    React Router - 如何使用动态路由进行 IndexRedirect、重定向

  27. 27

    如何使用react-router删除根路由上的尾随/

  28. 28

    如何使用 react-router-dom 创建动态路由?

  29. 29

    如何检测是否设置了react-router?

热门标签

归档