2016-11-28 2 views
2

Я ранг нового, чтобы реагировать и даже новее на Redux, таким образом, вопрос.Копирование объектов в редукторах React-Redux

Поэтому у меня есть начальное состояние в моем редукторе, который Object = {}

Теперь я хочу, чтобы изменить это состояние и вернуть его с пользователем объекта.

Так что я жду результата Object = {user}

Пользователь сам по себе имеет следующие свойства,

{A: 1, B:2, C:3} 

Если я использую Object.assign({}, state, user} Я получаю следующее,

Object = {A: 1, B:2, C:3} 

Так как скопировать объект пользователя в объект состояния как параметр без его разбиения. Также как это сделать, если объект, который я добавляю, представляет собой массив.

+0

Не знаете, что вы имеете в виду, разделив его - можете ли вы добавить объект, который вы хотели бы хранить? –

ответ

2

Попробуйте вместо этого: Object.assign({}, state, {user})

EDIT: В ответ на ваш комментарий ниже, если пользователь был массив, скажем users, он будет работать так же:

> var state = {A: 1, B:2, C:3} 
> var users = [1,2,3]; 
> Object.assign({}, state, {users}); 
{A: 1, B: 2, C: 3, users: [ 1, 2, 3 ] } 
+0

Хе-хе, просто избили меня! – Pineda

+0

Теперь, как я могу это сделать, когда объект, который я добавляю, представляет собой массив? –

+0

@StochasticNerd вы можете посмотреть на этот ответ http://stackoverflow.com/questions/40040102/remove-element-from-nested-redux-state/40049559#40049559 –

1

Попробуйте это:

Object.assign({}, state, { user: user }) 

Причина:

Объекты, которые вы pas петь, перезапишет предыдущие параметры, передав пользователю, вы переписываете текущее состояние с помощью {A: 1, B: 2, C: 3}, а не перезаписываете свойство объекта с помощью пользователя keyid.


В качестве альтернативы (и если установка поддерживает его), вы можете использовать с расширенным синтаксисом следующим образом:

{ 
    ...state, 
    user: user 
} 

на самом деле, еще короче,

{ 
    ...state, 
    user 
} 

Object.assign является излишеством для Redux.

Смежные вопросы