ReactJS redux 订阅语句

mik*_*kek 2 reactjs redux react-redux

store.subscribe( () => {} ) 是观察 Redux 商店变化的唯一方法吗?

我异步获取我的用户,当应用加载时,用户存储很可能是空的,所以我必须做这样的事情:

store.subscribe( () => {

        var users = store.getState().users;
        if( users.length > 0 ) {
          this.setState({ ... })
        }

      });
Run Code Online (Sandbox Code Playgroud)

现在我有 3 或 4 个组件,我必须在每个组件中使用相同的逻辑。我的问题:这个问题有更优雅的解决方案吗?在“全球层面”聆听 Redux 变化的某种方式?

mar*_*son 5

这里有两个答案。

是的,这store.subscribe()是观察商店变化的唯一方法(商店也实现了挑剔的例外Symbol.observable,所以如果你使用 observables,你也可以通过这种方式订阅)。

然而,connect来自官方 React-Redux的函数已经处理了存储订阅和提取组件所需数据的过程。不要自己编写商店订阅逻辑 - 使用connect. (我在 Reddit 上写了一篇长评论,解释了为什么你应该使用 React-Redux 而不是手动订阅。)