Reaction-native (mobX): Как добавить новый объект в существующий объект - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь добавить new object к существующему object.

В моем mobx Store у меня есть существующий объект, который содержит one user:

@observable user = {
    id: 101,
    email: 'kevin@dev.com',
    personalInfo: {
        name: 'kevin',
        address: {
            city: 'Costa Mesa',
            state: 'CA'
        }
    }
}

Я хочу добавить другого пользователя в существующий объект:

id: 102,
    email: 'john@dev.com',
    personalInfo: {
        name: 'john',
        address: {
            city: 'New York',
            state: 'NY'
        }

    }

Я хочу, чтобы мой конечный код выглядел следующим образом:

@observable user = {
    id: 101,
    email: 'kevin@dev.com',
    personalInfo: {
        name: 'kevin',
        address: {
            city: 'Costa Mesa',
            state: 'CA'
        }
    },
    id: 102,
    email: 'john@dev.com',
    personalInfo: {
        name: 'john',
        address: {
            city: 'New York',
            state: 'NY'
        }
    }
}

Какой будет правильный формат для добавления другого объекта в существующийобъект?

Будет ли это работать?

updateObjectState (){

const user2 = {
  id: 102,
  email: 'john@dev.com',
  personalInfo: {
      name: 'john',
      address: {
          city: 'New York',
          state: 'NY'
      }
  }
}
  store.pressedDate = [...store.pressedDate, user2] 
}

Заранее спасибо!

1 Ответ

2 голосов
/ 16 июня 2019

Ваш желаемый результат не может быть достигнут, так как идентификатор повторяется, поэтому он будет перезаписывать последний идентификатор, оборачивать каждого пользователя в объект или использовать массив

, используя id в качестве ключа и помещая значения, когда вы хотитечтобы добавить нового пользователя, просто создайте новую пару значений ключа для пользователя

@observable user = {
    '101':{
           id: 101,
           email: 'kevin@dev.com',
           personalInfo: {
           name: 'kevin',
           address: {
             city: 'Costa Mesa',
             state: 'CA'
           }
      }
   }
}

Или, имея пользователя в качестве массива, чтобы добавить нового пользователя, просто нажмите значение в пользователе

@observable user = [{
    id: 101,
    email: 'kevin@dev.com',
    personalInfo: {
        name: 'kevin',
        address: {
            city: 'Costa Mesa',
            state: 'CA'
        }
    }
}]

PS - Я не уверен, как вы используете данные, но я пойду с объектом пути,

...