【发布时间】:2023-09-06 19:58:01
【问题描述】:
我正在构建一个多语言网站,需要在 URL 查询参数中显示当前选择的语言(不仅是语言,为了 KISS,我只考虑这个)。
我正在使用 react-intl 进行网站翻译以及在 redux 中存储当前选择的语言。
这是我当前的路由器 (HashRouter) 的外观:
return (
<div className="App">
<Provider store={store}>
<Router hashType="noslash">
<Content />
</Router>
</Provider>
</div>
);
}
let Content = connect(state => ({ language: state.common.language }))(props => {
const lang = props.language;
return (
<IntlProvider locale={lang} messages={messages[lang]}>
<Switch>
<Route path='/station_forecasts'>
<StationForecastsPage />
</Route>
<Route path="/">
<Redirect
to={{
pathname: "/station_forecasts",
search: "?sid=76"
}}
/>
</Route>
</Switch>
</IntlProvider>
);
});
我目前的做法是将以下几行添加到StationForecastsPage 组件中:
useEffect(() => {
history.push({
pathname: `${window.location.href}`,
search: `?lang=${lang}`
});
});
其中lang 是从 redux 商店获取的语言代码。但是,它会导致无限循环,并且 React 会抛出最大深度超出错误。
我也可以使用window.location.href 技巧,但它会导致页面刷新,这显然对我不起作用。
我的问题是实现上述查询参数更新的最佳方式是什么?
【问题讨论】:
-
在条件下使用位置/参数道具
-
@xadm 你能详细说明一下吗?
-
*.com/a/49242725/6124657 - 检查是否需要重定向
标签: reactjs redux react-intl