首页 > redux必须用<Provider store={store} 这样传递全局的store吗?

redux必须用<Provider store={store} 这样传递全局的store吗?

直接在 component中引用store

onFormSubmit(e) {
    e.preventDefault();
    store.dispatch(addTodo(this.state.message));
}

这样写,是不是也可以?


这样写当然是可以了,不过你的 store 从哪儿来?看你的意思你是打算把 store 暴露到全局咯?就像 window.store = createStore(initialState) 这样子?

Provider 是 react-redux 库提供的,redux 本身并不强制依赖它,然而问题是 redux 本身也不依赖 react。作为一个纯粹的 data layer,redux 并不关心你用什么视图引擎,所以如何访问 store 是你自己需要考虑的事情,redux 并不会约束你一定要怎么做。

react-redux 是官方提供的解决方案,Provider 本身并没有做很多事情,只是把 store 放在 context 里罢了。实际上如果你用 react-redux,那么连接视图和数据层最好的办法是使用 connect 函数。本质上 Provider 就是给 connect 提供 store 用的。

认真读一遍 react-redux 的文档吧,并不长且最后演示了多种最佳实践。


放在window里在绝大多数情况下是可行的,但是在多个redux或者后端渲染时就不能这么做了。

【热门文章】
【热门文章】