【问题标题】:I need to update complex state can one help me [closed]我需要更新复杂的状态可以帮助我[关闭]
【发布时间】:2022-11-24 00:48:17
【问题描述】:

我需要更新 ShowInputFields 你能帮我解决我的问题吗?我现在得到的只是在对象属性数组之外,例如 nazwa Firmy Transportowej 和 date让我知道是否有任何关于改变复杂状态的想法

const [ShowInputFields, setShowInputFields] = React.useState({
    nazwaFirmyTransportowej: "",
    dataAktualizacji: moment().format("YYYY-MM-DD"),
    months: [{
        styczen: "",
        luty: "",
        marzec: "",
        kwiecien: "",
        maj: "",
        czerwiec: "",
        lipiec: "",
        sierpien: "",
        wrzesien: "",
        pazdziernik: "",
        listopad: "",
        grudzien: "",
    }]
});

const handleInput = (fieldName, value) => {
    setShowInputFields({
        ...ShowInputFields,
        [fieldName]: value,
    });
}

【问题讨论】:

  • 你能解释更多并添加示例和错误吗?

标签: reactjs state react-functional-component react-state update-statement


【解决方案1】:

我认为您只能在对象属性数组之外获取的原因是因为 setState 不处理嵌套对象更新。为了实现更新嵌套对象中的状态,您可以遵循以下方法:

setShowInputFields((prevState) => {
  return {
    ...prevState,
  months: prevState.months.map(() => { ... })
  }
})

有关更详细的说明,请查看以下链接:

How to update nested state properties in React

React: Setting State for Deeply Nested Objects w/ Hooks

How to set state in nested array of objects in ReactJs?

【讨论】:

    【解决方案2】:

    也许你可以试试这个,在我的项目中它工作正常

    setShowInputFields({
                ...ShowInputFields,
                ShowInputFields.months: ShowInputFields.months.map((val) => ({...val, styczen: "update"})),
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-28
      • 2013-12-06
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-18
      • 2021-03-04
      相关资源
      最近更新 更多