object.assign перезаписывает все объекты в моем массиве дублирующейся информацией - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь добавить ключ идентификатора к каждому объекту упражнения, используя object.assign, однако, если я добавляю кратные числа одного и того же объекта.

Новый object.assign переопределяет ключ (directId)для всех с тем же именем.Я попытался использовать циклы, карты, добавить временную метку к ключу, чтобы увидеть, дает ли uuidv1 тот же самый keyid, если объекты точно такие же, но я не верю, что это так.

Кажется, этопроблема с object.assign.

Функция запускается каждый раз, когда я нажимаю на новый объект, а uuidv1 () является генератором уникальных ключей.

Не знаю, что делать дальше.

  saveDataToWorkout = obj => {
    const objWithId = Object.assign(obj, { directId: uuidv1() });
    this.setState({
      pendingSavedArr: [...this.state.pendingSavedArr, objWithId]
    });
  };

04:16:45: Array [
04:16:45:   Object {
04:16:45:     "avatarURL": 16,
04:16:45:     "difficulty": "Easy",
04:16:45:     "directId": "d50d5310-c7ad-11e8-a726-e942788f9851",
04:16:45:     "equipment": "Machine",
04:16:45:     "estimatedTime": 5,
04:16:45:     "muscleGroup": "Shoulders and Traps",
04:16:45:     "title": "Leverage Shrug",
04:16:45:   },
04:16:45:   Object {
04:16:45:     "avatarURL": 16,
04:16:45:     "difficulty": "Easy",
04:16:45:     "directId": "d61e4de0-c7ad-11e8-a726-e942788f9851",
04:16:45:     "equipment": "Machine",
04:16:45:     "estimatedTime": 5,
04:16:45:     "muscleGroup": "Shoulders and Traps",
04:16:45:     "title": "Smith Machine Shrug",
04:16:45:   },
04:16:45: ]

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

04:16:46: Array [
04:16:46:   Object {
04:16:46:     "avatarURL": 16,
04:16:46:     "difficulty": "Easy",
04:16:46:     "directId": "d50d5310-c7ad-11e8-a726-e942788f9851",
04:16:46:     "equipment": "Machine",
04:16:46:     "estimatedTime": 5,
04:16:46:     "muscleGroup": "Shoulders and Traps",
04:16:46:     "title": "Leverage Shrug",
04:16:46:   },
04:16:46:   Object {
04:16:46:     "avatarURL": 16,
04:16:46:     "difficulty": "Easy",
04:16:46:     "directId": "d61e4de0-c7ad-11e8-a726-e942788f9851",
04:16:46:     "equipment": "Machine",
04:16:46:     "estimatedTime": 5,
04:16:46:     "muscleGroup": "Shoulders and Traps",
04:16:46:     "title": "Smith Machine Shrug",
04:16:46:   },
04:16:46:   Object {
04:16:46:     "avatarURL": 16,
04:16:46:     "difficulty": "Easy",
04:16:46:     "directId": "d6924560-c7ad-11e8-a726-e942788f9851",
04:16:46:     "equipment": "Dumbbell",
04:16:46:     "estimatedTime": 5,
04:16:46:     "muscleGroup": "Shoulders and Traps",
04:16:46:     "title": "Smith Machine Behind the Back Shrug",
04:16:46:   },
04:16:46: ]

1 Ответ

0 голосов
/ 04 октября 2018

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

const objWithId = Object.assign({}, obj, { directId: uuidv1() });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...