In 反应路由器 v4,对于减速器的异步注入,请执行以下操作:
In your 减速器.js文件添加一个名为 createReducer 的函数,它将注入的Reducers 作为参数并返回组合的减速器:
/**
* Creates the main reducer with the dynamically injected ones
*/
export default function createReducer(injectedReducers) {
return combineReducers({
route: routeReducer,
modal: modalReducer,
...injectedReducers,
});
}
然后,在你的store.js file,
import createReducer from './reducers.js';
const store = createStore(
createReducer(),
initialState,
composedEnhancers
);
store.injectedReducers = {}; // Reducer registry
现在,为了在安装反应容器时以异步方式注入减速器,您需要使用注入Reducer.js https://github.com/react-boilerplate/react-boilerplate/blob/master/app/utils/injectReducer.js在容器中运行,然后将所有减速器与连接组合起来。
示例组件Todo.js:
// example component
import { connect } from 'react-redux';
import { compose } from 'redux';
import injectReducer from 'filepath/injectReducer';
import { addToDo, starToDo } from 'containers/Todo/reducer';
class Todo extends React.Component {
// your component code here
}
const withConnect = connect(mapStateToProps, mapDispatchToProps);
const addToDoReducer = injectReducer({
key: 'todoList',
reducer: addToDo,
});
const starToDoReducer = injectReducer({
key: 'starredToDoList',
reducer: starToDo,
});
export default compose(
addToDoReducer,
starToDoReducer,
withConnect,
)(Todo);
React-样板 https://github.com/react-boilerplate/react-boilerplate是了解整个设置的绝佳来源。您可以在几秒钟内生成示例应用程序。
InjectReducer.js、configureStore.js(或在您的情况下是store.js)的代码以及实际上整个配置都可以从react-boilerplate中获取。具体链接可以在这里找到注入Reducer.js https://github.com/react-boilerplate/react-boilerplate/blob/master/app/utils/injectReducer.js, 配置Store.js https://github.com/react-boilerplate/react-boilerplate/blob/master/app/configureStore.js.