React native React Redux Reducer-添加到数组的第一个元素未定义
我有一个redux reducer,由于某种原因,我在状态中添加到数组的第一个值被设置为undefined。在这种情况下,“用户\数据\状态\更改”。这是减速器的代码React native React Redux Reducer-添加到数组的第一个元素未定义,react-native,redux,react-redux,React Native,Redux,React Redux,我有一个redux reducer,由于某种原因,我在状态中添加到数组的第一个值被设置为undefined。在这种情况下,“用户\数据\状态\更改”。这是减速器的代码 import { CLEAR_DATA, USERS_DATA_STATE_CHANGE, USERS_POSTS_STATE_CHANGE } from "../constants"; const initialState = { users: [], usersLoaded: 0 };
import { CLEAR_DATA, USERS_DATA_STATE_CHANGE, USERS_POSTS_STATE_CHANGE } from "../constants";
const initialState = {
users: [],
usersLoaded: 0
};
export const users = function (state = initialState, action)
{
switch (action.type)
{
case USERS_DATA_STATE_CHANGE:
console.log(action.user);
return {...state, users: [...state.users, action.user]}
case USERS_POSTS_STATE_CHANGE:
return {...state, usersLoaded: state.usersLoaded + 1, users: state.users.map(function (user) {user.uid === action.uid ? {...user, posts: action.posts} : user})}
case CLEAR_DATA:
return initialState;
default:
return state;
}
}
以下是在更改状态之前记录的每个用户的数据
这是3次添加后阵列的外观
根本无法解释为什么会发生这种情况,因此我们非常感谢您的帮助,
干杯。这个问题实际上发生在你的
用户的帖子、状态、变化中。处于状态的回调函数.users.map
不返回任何内容,因此它用未定义的替换数组中的所有用户
是一种隐含回报,因此您可以执行以下操作:
users: state.users.map(user =>
user.uid === action.uid ? { ...user, posts: action.posts } : user
)
使用函数(用户){}
,您需要返回
关键字:
users: state.users.map(function (user) {
return user.uid === action.uid ? { ...user, posts: action.posts } : user;
})
谢谢,现在很好用。完全忘记了arrow函数有一个隐含的返回。