我已经使用redux几周了,我之前也使用过flux,但我想确保以正确的方式使用redux。到目前为止,我所有的研究都指向了一家商店。这很好,但大多数解释和示例讨论单页应用程序。当应用程序增长到超过1页的单页应用程序时会发生什么?
例如,单页应用程序的集合,每个应用程序组织为一个模块文件夹,每个应用程序彼此无关。这是多个商店可供选择的情况吗?所以每个模块都有自己的存储,缩减器等......或者它仍然被认为是在所有模块之间共享1个存储的redux方式?
BTW - 单页应用程序'我不是字面意思是1页,而是一个模块,可以包含1-5个共享数据和其他功能的实际页面
答案 0 :(得分:2)
拥有一个商店
这正是Redux的工作原理。你有一个商店和许多行动。调度时,每个操作都通过reducer更新存储。
创建商店时,您将创建一个商店:
import { createStore } from 'redux';
import { render } from 'react-dom';
export default render(
<Provider store={createStore(...)}>
...
</Provider>
, document.getElementById('...'));
createStore
调用返回一个商店,然后由Provider
组件使用该商店将数据从商店传递到连接的组件(也称为容器)。
单页应用程序的集合,每个应用程序都组织为一个模块文件夹,每个应用程序彼此无关。
每个零件都可以使用自己的商店部分。您可以使用combineReducers
功能划分它们:
import { createStore } from 'redux';
import { render } from 'react-dom';
import moduleA from './reducers/moduleA';
import moduleB from './reducers/moduleB';
import moduleC from './reducers/moduleC';
const store = createStore(combineReducers({
moduleA,
moduleB,
moduleC
});
export default render(
<Provider store={store}>
...
</Provider>
, document.getElementById('...'));
并将store存储为具有与reducers一样多的属性的对象。每个reducer现在负责其自身的一部分状态,因此模块。正确完成后,没有一个减速器可以改变状态的一部分,而不是减速器负责的部分。
你应该看看任何样板,有很多。例如,erikras/react-redux-universal-hot-example。