代码之家  ›  专栏  ›  技术社区  ›  anderish

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

  •  -1
  • anderish  · 技术社区  · 6 年前

    我正在尝试通过 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 回复  |  直到 6 年前
        1
  •  1
  •   dave    6 年前
    _.assign({}, item, _.find(b, ['user_id', item.user_id]));
    

    _.assign 指定给第一个参数,该参数在强制转换中为 item ,它是对中对象的引用 state.users 。因此,您将第一个参数设置为空对象,因此每次都在写入新对象,并且不会修改任何现有对象。