react-router - 如何在 React Router v5 中更新 URL 并替换历史状态而不重新渲染整个应用程序?
问题描述
在使用 React Router 及其浏览器历史记录时,有几种情况会触发重新渲染,我不想重新渲染整个应用程序:
使用 history.replace('currentPath', { data: 'someState' };
在 URL 中添加诸如“?active=1”之类的参数。
有没有办法做到这一点,或者解决方案是优化某些组件的性能?
解决方案
你可以history.replaceState()
这样使用:
const setQueryParams = (param, value) => {
const history = window.history;
let currentUrlParams = new URLSearchParams(window.location.search);
currentUrlParams.set(param, value);
const url = `${window.location.pathname}?${currentUrlParams.toString()}`;
history.replaceState({}, '', url);
};
推荐阅读
- android - 为什么 Kotlin(社区)鼓励模式匹配中的反思
- django - 如何获取返回的查询集的 db id/pk?
- javascript - 在初始加载和稍后的某些单击事件上对加载网格做出反应
- pandas - 如何在同一个 DataFrame 中合并互补数据?
- react-native - 在 react-native 中使用 JS 函数替换时出错
- c - 如何在 TM4C129EXL 上运行 FreeRTOS?
- javascript - Vue - 如何使用 Vuex 使用 mapState 在数组的第一个对象中列出数组
- assembly - imageBase 的最小可接受值是多少?
- python - TKinter TTK 笔记本和并排绘图的框架
- python - Pytorch 负载平衡和可扩展性