【发布时间】:2019-08-10 15:20:46
【问题描述】:
我需要在我的 react 路由器的所有路由中访问相同的状态。但是,当我将 SchedulerContext.Provider 放在 React Router Switch 组件周围时,我会不断地重新渲染(闪烁)一条路由。我想知道问题是否在于使用 Switch 周围的上下文或其他地方。
我注意到它只发生在第一条路线的组件(Dash)中。
class App extends React.Component {
state = {
scheduler: {
...defaultSchedulerContext,
fetchScheduledPosts: () => {
axios
.post(`${defaultSchedulerContext.API_ENDPOINT}/list`)
.then(res => {
if (res.status === 200) {
this.setState(state => ({
scheduler: {
...state.scheduler,
postsList: res.data
}
}))
} else {
this.setState(state => ({
scheduler: {
...state.scheduler,
errorMessage: res.status
}
}))
}
})
}
},
}
render() {
return (
<>
<SchedulerContext.Provider value={this.state.scheduler}>
<Switch>
<Route exact path="/" component={withAuth(Dash)} />
<Route path="/login" component={Login} />
<Route path="/register" component={Register} />
</Switch>
</SchedulerContext.Provider>
</>
)
}
}
【问题讨论】:
标签: javascript reactjs react-router react-context