Reactjs 未在回调中更新React上下文

Reactjs 未在回调中更新React上下文,reactjs,ecmascript-6,pusher,Reactjs,Ecmascript 6,Pusher,我使用pusher js向用户订阅事件,并且我在回调中传递的信息存在问题,无法保持更新。我使用react路由器,在我的组件上有一个“位置”上下文 connect() { let {pusher, channelName, eventName} = this.props; let pusher_channel = pusher.subscribe(channelName); pusher_channel.bind(eventName, () => console.

我使用pusher js向用户订阅事件,并且我在回调中传递的信息存在问题,无法保持更新。我使用react路由器,在我的组件上有一个“位置”上下文

connect() {
    let {pusher, channelName, eventName} = this.props;

    let pusher_channel = pusher.subscribe(channelName);

    pusher_channel.bind(eventName, () => console.log(this.context.location.pathname));
}
出于演示目的,我只是在控制台上记录事件发生时用户所在的当前url路径名。当用户加载该应用程序时,该组件将被加载并保持加载状态。问题在于,如果用户导航到应用程序中的另一个页面,并且出现事件,则路径名不会反映用户所在的实际页面,而是反映用户最初加载应用程序时所在的页面

是否有办法使回调保持对已发生的任何上下文或道具更改的更新?

更新上下文 不要这样做。 React有一个用于更新上下文的API,但它从根本上被破坏了,您不应该使用它



改用React路由器。

为什么不从正在使用的路由器获取路径名,或者干脆
window.location.pathname
?使用window.location.pathname确实有效。但你能解释一下原因吗?我是通过上下文使用位置的,因为react router设置了…所以(如果我没记错他们的文档的话)本质上是一样的。另外,react router文档建议通过它们,而不是通过window.location.I尝试更新上下文。我只是试图从回调中查看上下文。