为什么我的State对象被更改了?应对

时间:2018-04-26 17:37:09

标签: javascript reactjs

我试图通过user_id键合并两个数组对象。我得到的两个数组对象来自state

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}状态也随着合并而变化。为什么是这样?我这几个小时都被困住了。

1 个答案:

答案 0 :(得分:1)

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

_.assign分配给第一个参数,在你的演员阵容中item,它是对state.users中对象的引用。因此,您将第一个参数设置为空对象,因此每次都要写入新对象,并且不会修改任何现有对象。