Redux - 商店澄清数量

时间:2016-09-01 12:50:29

标签: reactjs redux

我已经使用redux几周了,我之前也使用过flux,但我想确保以正确的方式使用redux。到目前为止,我所有的研究都指向了一家商店。这很好,但大多数解释和示例讨论单页应用程序。当应用程序增长到超过1页的单页应用程序时会发生什么?

例如,单页应用程序的集合,每个应用程序组织为一个模块文件夹,每个应用程序彼此无关。这是多个商店可供选择的情况吗?所以每个模块都有自己的存储,缩减器等......或者它仍然被认为是在所有模块之间共享1个存储的redux方式?

BTW - 单页应用程序'我不是字面意思是1页,而是一个模块,可以包含1-5个共享数据和其他功能的实际页面

1 个答案:

答案 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