这是两个州/减少者之间数据共享的合理解决方案吗?
//combineReducers function coreReducer(state = {},action){ let filtersState = filters(state.filters,action); let eventsState = events(state.events,action,{ filters: filtersState}); return { events: eventsState,filters : filtersState}; } export const rootReducer = combineReducers( { core : coreReducer,users } );
如果是这样,如果对同一个调度事件和第二个减少函数的回答都取决于第一个的新状态,那么如何保证执行reducer函数的顺序呢?
假设我们调度一个SET_FILTER事件,该事件附加到过滤器Store中的activeFilters集合,然后更改事件Store中项目相对于activeFilters值的可见性.
//ActiveFilters reducer function filtersActions(state = {},action){ switch (action.type) { case SET_FILTER: return Object.assign({},state,{ [action.filterType]: action.filter }) case REMOVE_FILTER: var temp = Object.assign({},state); delete temp[action.filterType]; return temp; case REMOVE_ALL_FILTERS: return {}; default: return state } }
我想我找到了答案 – 计算派生数据 – 重新选择
解决方法
/--------container--------/ import {getGroupsAndMembers} from '../reducers' const mapStateToProps = (state) => { return { inputValue: state.router.location.pathname.substring(1),initialState: getGroupsAndMembers(state) <-- this one } } /--------reducers--------/ export function getGroupsAndMembers(state){ let { groups,members } = JSON.parse(state) response = {groups,members} return response; } GroupsContainer.propTypes = { //React Redux injection pushState: PropTypes.func.isRequired,// Injected by React Router children: PropTypes.node,initialState:PropTypes.object,}
不要忘记遵循’连接’的指导方针
export default connect(mapStateToProps,{ pushState })(GroupsContainer)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。