Javascript 为什么我的状态对象被更改?反应

Javascript 为什么我的状态对象被更改?反应,javascript,reactjs,Javascript,Reactjs,我正试图通过user\u id键合并两个数组对象。我得到的两个数组对象来自状态 function mapStateToProps(state) { let {users} = state.users.result; let {invite} = state.invite.result; let {friends} = state.friends.result; if (users && invite && friends) { let

我正试图通过
user\u id
键合并两个数组对象。我得到的两个数组对象来自
状态

function mapStateToProps(state) {

  let {users} = state.users.result;
  let {invite} = state.invite.result;
  let {friends} = state.friends.result;

  if (users && invite && friends) {

    let UsersList = mergeArray(users, invite.sent_invites); // Merge Users & Sent Invites
 }



function mergeArray(a, b) {
    return _.map(a, function(item) {
        return _.assign(item, _.find(b, ['user_id', item.user_id]));
      });

    }
但是,我的
{users}
状态也会随着合并而改变。为什么会这样?我一直被困在这几个小时里

_.assign({}, item, _.find(b, ['user_id', item.user_id]));

.assign
分配给第一个参数,该参数在强制转换中是
,它是对处于
状态的对象的引用。用户
。因此,您将第一个参数设置为空对象,这样您每次都会写入一个新对象,并且不会修改任何现有对象。

users是对state.users.result的引用,因此您的合并将分配给该对象。这就是为什么你的状态对象changesHow我能解决这个问题吗?试试{…users}。
.assign({},item,{.find(b,['user_id',item.user_id])
\uu0.assign
指定给第一个参数,该参数在强制转换中是
,它是对处于
状态的对象的引用。用户
。因此,您将第一个参数设置为空对象,这样您每次都会写入一个新对象,并且不会修改任何现有对象。