我具有以下上下文
<AuthContext.Provider value={
{
token: localStorage.getItem('token'),
userId: this.state.userId,
login: this.login,
logout:this.logout
}
}>
<main className="main-content">
<Switch>
{this.context.token && <Redirect from="/" to="/events" exact/>}
{this.context.token && <Redirect from="/register" to="/events" exact/>}
{this.context.token && <Redirect from="/login" to="/events" exact/>}
{!this.context.token && <Route path="/register" component={RegisterPage} />}
<Route path="/events" component={EventsPage} />
{this.context.token && <Route path="/bookings" component={BookingsPage} />}
{!this.context.token && <Route path="/login" component={LoginPage} />}
{!this.context.token && <Redirect to="/login" exact/>}
</Switch>
</main>
</AuthContext.Provider>
尽管我的this.context.token
只是在课程之外被设置,但未定义。在另一个类中,它可以正常工作,在这里我将其与消费者包装在一起,但是,我在这里做了同样的事情,但无济于事!有任何想法吗?我可以使用提供程序中的值,还是必须将我的Switch语句包装在<AuthContext.Provider>
标记中?