onChange如何修改数据层级比较深的表单数据?

#1

React的受控表单组件,在设计上不支持双向数据绑定,valueLink已经不支持。对于层级比较深的数据,如何处理?例如如下数据:

this.state = {
  model: {
    segment_info: {
      departure_timestamp = "123123123123",
      arrived_timestamp = "123123123123",
      airline_name =  "国航"
    }
  }
}

在触发onChange的方法里,我不得不这样写才能触发内层的数据改变:

if (fieldName == "departure_timestamp") {
     model.segment_info.departure_timestamp = value;
}
if (fieldName == "arrived_timestamp") {
     model.segment_info.arrived_timestamp = value;
}
if (fieldName == "airline_name") {
     model.segment_info.airline_name = value;
}

请问有什么好的解决方式吗?

#2

model.segment_info[fieldName] = value

#3
Object.assign()
#4

这个应该没有从根本上解决问题,如果数据是这样的呢?

this.state = {
  model = {
    segment_info: {
       ...
    },
    price_info: {
      ticket_price: {
       ...
      },
      price: {
      ...
     }
    },
    ...
  }
}
#5

不怕打脸

!没有错误处理,仅供讨论

#6

可以参考