【发布时间】:2020-09-20 05:05:52
【问题描述】:
我对如何在 redux 项目中设置 React Router 感到有些困惑。这是我的顶级组件的简化:
const App = () => {
const [data, setData] = useState();
useEffect(() => {
const data = fetchData(); //initial async data fetch
setData(data);
}, [])
useEffect(() => {
if (data) {
const initialUsState = getRandomState(data.state);
const intitialUsCounty = getRandomCounty(data.county);
//these are action creators that dispatch to the store after the intial data fetch
dispatchUsState(initialUsState);
dispatchUsCounty(intitialUsCounty);
}
}, data)
const UsState = useSelector(state => state.UsState); //react-redux state selector hooks
const UsCounty = useSelector(state => state.UsCounty);
const getPlotData = () => {
const plotData = createPlotData(UsState, UsCounty);
return plotData;
}
return UsState && UsCounty ? (
<Router>
<Route path={`/:${UsState}/:${UsCounty}`} >
<ComponentOne UsState={UsState} UsCounty={UsCounty} />
<ComponentTwo UsState={UsState} UsCounty={UsCounty} />
<Scatterplot plotData={getPlotData()}
</Route>
</Router>
)
:
null;
我遇到了一些问题:
当我在本地运行时,在
localhost:8080/,我没有看到任何东西被渲染到屏幕上。我假设这是因为我处于根级路径?当UsState和UsCounty可用时,如何自动到达/:${UsState}/:${UsCounty}路径?UsState和UsCounty都是存储中的值。如果我将我的 url 更改为我知道有效的特定/:${UsState}/:${UsCounty}路径,redux 将如何将适当的UsState和UsCounty分派到商店,以及完成初始数据获取?另外,如果 URL 中提供了
/:${UsState}/:${UsCounty},我不想将随机的州和县分派到商店,因为它已经存在于 URL 中。
【问题讨论】:
-
我发现你的 useEffect 有问题。这取决于
data的变化以及它设置data。这不会造成无限循环吗? -
哦,哇,上面打错字了。我会改的
标签: reactjs redux react-router