import {LOADING_POSTS, GET_ERROR, UPDATE_POSTS} from './postTypes';
const initialState = {
loading : false,
posts : [],
error : ''
};
const postReducer = (state = initialState, action) => {
switch(action.type){
case LOADING_POSTS :
return {
...state,
loading : true
};
case UPDATE_POSTS :
return {
loading : false,
posts : state.posts.concat(action.data),
error : ''
};
case GET_ERROR :
return {
...state,
loading : false,
error : action.error
};
default : return state;
}
}
export default postReducer;
每当我尝试更新帖子时,我都会收到“错误TypeError:无法读取未定义的属性'concat'”。任何想法可能是什么问题吗?
答案 0 :(得分:0)
在您尝试向其state.posts
添加新数据时似乎未设置concat
。
您可以在其中进行检查以防止错误(如果只是在设置posts
之前调用了该错误)。如果posts
根本没有设置,请调查为什么它没有通过。
return {
loading : false,
posts : (state.posts
&& Array.isArray(state.posts) // Extra check, you do not need this one if you are certain of the type
&& state.posts.concat(action.data)),
error : ''
};
希望这会有所帮助
答案 1 :(得分:0)
我尝试过,它实际上有效!
import {LOADING_POSTS, GET_ERROR, UPDATE_POSTS} from './postTypes';
const initialState = {
loading : false,
posts : [],
error : ''
};
const postReducer = (state = initialState, action) => {
switch(action.type){
case LOADING_POSTS :
return {
...state,
loading : true
};
case UPDATE_POSTS :
return {
loading: false,
posts: state.posts ? state.posts.concat(action.data) : action.data,
error : ''
};
case GET_ERROR :
return {
...state,
loading : false,
error : action.error
};
default : return state;
}
}
export default postReducer;