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
指定给第一个参数,该参数在强制转换中是项
,它是对处于状态的对象的引用。用户
。因此,您将第一个参数设置为空对象,这样您每次都会写入一个新对象,并且不会修改任何现有对象。