【发布时间】:2019-10-05 05:30:15
【问题描述】:
我在 App.js 中的路线中有一个 useEffect
<Switch>
<Route exact path={['/en', '/fr']} component={HomePage} />
<Route path={['/en/*', '/fr/*']}>
<Route path="/:lang/*" component={DefaultLanguage} />
在同一个文件(App.js)中,我们有这样的组件(使用 react-localize-redux):
const DefaultLanguage = withLocalize(
({ activeLanguage, setActiveLanguage, ...props }) => {
useEffect(() => {
console.log('setting active language');
setActiveLanguage(props.match.params.lang);
}, []);
return <></>;
}
);
问题是我单击的每个链接都会运行 setActiveLanguage,即使我将 [] 设置为仅在第一次渲染时运行(因为这是我唯一关心从 URL 设置语言的时间)我在其他部分也遇到过这个问题的应用程序以及。据我了解,useEffect 不应该在每次安装组件时都运行,除非它的依赖项发生变化,但我似乎遗漏了一个细节。
【问题讨论】:
标签: reactjs react-redux react-router-v4 use-effect react-localize-redux