React native React Redux Reducer-添加到数组的第一个元素未定义

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 };

我有一个redux reducer,由于某种原因,我在状态中添加到数组的第一个值被设置为undefined。在这种情况下,“用户\数据\状态\更改”。这是减速器的代码

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函数有一个隐含的返回。