我一直在使用react-native和redux,并且遇到了错误。尽管当我在 reducer 内调试它时存在有效负载,但状态始终初始化为起始状态。
这是我的 reducer 文件
let initialState = {
filterList: [],
isFetching: false,
activeFilters: [],
}
export function fetchFilterList(state = initialState, action) {
return { ...state, isFetching: true };
}
export function fetchFilterListSuccess(state, action) {
return {
...state,
filterList: action.payload,
isFetching: true,
dsad: "dada",
}
}
export function fetchFilterListError(state, action) {
return { ...state, isFetching: false };
}
这是我将它们组合成一个函数的地方(在与上面相同的文件中):
export function combinedFiltersReducers(state = initialState, action) {
switch (action.type) {
case ACTION_TYPES.FETCH_FILTER_LIST:
return fetchFilterList(state, action);
case ACTION_TYPES.FETCH_FILTER_LIST_SUCCESS:
return fetchFilterListSuccess(state, action);
case ACTION_TYPES.TOGGLE_FILTER_ITEM:
return toggleFilterItemStart(state, action);
case ACTION_TYPES.TOGGLE_FILTER_ITEM_SUCCESS:
return toggleFilterItemSuccess(state, action);
default:
return state;
}
}
这是我的组合 reducer 函数,位于一个名为主 reducer 的单独文件中。
export default combineReducers({
adList: fetchAdListSuccess,
filterList: combinedFiltersReducers,
});
这是我接收组件状态的地方,它总是落到初始状态。
const mapStateToProps = state => ({
filterList: state.filterList,
});
const mapPropsToDispatch = dispatch => ({
fetchFilterList:() => dispatch(fetchFilterList()),
toggleFilterItem: (data) => dispatch(toggleFilterItem(data)),
});
export default connect(
mapStateToProps,
mapPropsToDispatch
)(FilterComponent);
我找不到错误,所以我需要一些帮助。提前致谢。
最佳答案
好的,我发现一个问题。举个例子:
return fetchFilterList(state, action);
您正在调用 fetchFilterList
方法并传递初始状态。所以每次调用它实际上都会传递初始状态。该方法只是复制初始状态。而是这样做:
return fetchFilterList(...state, action);
关于reactjs - reducer 始终返回初始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52670727/