Я собираю разные значения из серии последовательных форм и использую спреды для передачи этой информации на каждом этапе. Проблема в том, что я изо всех сил пытаюсь создать желаемый формат данных. Как мне структурировать спред на следующее?
Я пытаюсь создать это:
{
[
"Your details": {
"name": "value",
"email": "value",
"mobile": "value",
},
"Payment details": {
"cardnumber": "value",
"cardname": "value",
"expire": "value",
"security": "value",
},
"Billing address": {
"cardnumber": "value",
"cardname": "value",
"expire": "value",
"security": "value",
},
]
}
Я использую следующий разворот:
var value = this.refs.form.getValue()
if (value) {
let formValues = { ...this.props.navigation.state.params.form, ['Payment']: { ...value } }
}
Результат:
{
"name": "value",
"email": "value",
"mobile": "value",
"Payment": {
"cardnumber": "value",
"cardname": "value",
"expire": "value",
"security": "value",
},
"Billing address": {
"cardnumber": "value",
"cardname": "value",
"expire": "value",
"security": "value",
},
}
Заранее спасибо.
Мы не сможем вам помочь, если вы не расскажете нам, что такое this.props.navigation.state.params.form и value. Но ваш код явно создает свойство под названием Payment, а не Payment details, с одной стороны. Кроме того, "this", которое вы говорите, что пытаетесь создать, недействительно, у вас есть инициализатор массива внутри инициализатора объекта без какого-либо имени свойства.
Спасибо. Я добавил результат. this.props.navigation.state.form - это то место, где я извлекаю данные из предыдущей формы. value - это комбинация всех значений, извлеченных из полей текущей отправляемой формы. Все это под одним объектом {name:value, email: value, mobile:value}
FWIW, {['Payment']: { ...value } } эквивалентен {'Payment': { ...value } } или {Payment: { ...value } }. Нет необходимости использовать вычисляемые свойства со строковыми литералами.
Феликс, спасибо за совет. Вы знаете, как добиться желаемого результата, используя спреды?
Попробуйте сначала не использовать spread, а просто явно назначьте нужные свойства.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Немного непонятно, какая у вас проблема. Не могли бы вы вставить результат оператора
let formValues = { ... }, чтобы мы могли увидеть, чем он отличается от того, что вы хотите сделать?