当前位置: 首页 > 知识库问答 >
问题:

(REACT)如何将状态的值设置为具有属性的对象,属性也是对象?

梁丘权
2023-03-14

我想接收一些输入字段的值,并将它们设置为newValue状态,但状态的某些属性本身就是对象。希望newValue状态的格式为:

{
        name : {
            firstName : 'Eithan',
            lastName :'Auralius'
        },
        rank : 7
}

现在,对象保存如下:

{
    name.firstName : 'Eithan',
    name.lastName : 'Auralius',
    rank : 7
}

有没有办法通过调整getValue函数或输入字段来实现这一点?

//State to store the created or updated user string
const [newValue, setNewValue] = useState();

//onChange triggered function to update 
const getValue = (event)=> {
    
    //Setting the value of the state using the changed input fields
    setNewValue((newValue)=> {
        return {
            ...newValue,
            [event.target.name] : event.target.value,
        }
    });
}

const submitData = (event)=> {
    event.preventDefault();
    console.log(newValue);
}

return (
    <div className='loginRegister'>
        <form onSubmit={submitData}>
            <div className='descriptionInput'><div className='description'>First Name</div>
            {//the name prop is used to set the field name in the getValue function}
            <input type="text" name='name.firstName' defaultValue={member.name.firstName} onChange={getValue}></input></div>
            <button>Submit</button>
        </form>
    </div>
);

共有1个答案

梁丘凯定
2023-03-14

你可以试试这个。

null

import { useState } from "react";

export default function App() {
  let defaultState = {
    name: {
      firstName: "",
      lastName: ""
    },
    rank: 0
  };
  const [newValue, setNewValue] = useState(defaultState);

  const submitData = (event) => {
    event.preventDefault();
    console.log(newValue);
  };
  //onChange triggered function to update
  const getValue = (event) => {
    //Setting the value of the state using the changed input fields
    setNewValue((newValue) => {
      return {
        name: {...newValue.name, [event.target.name]: event.target.value},
        rank: newValue.rank
      };
    });
  };

  return (
    <div>
      <form onSubmit={submitData}>
        <div>
          <div>First Name</div>
          <input
            type="text"
            name="firstName"
            defaultValue={newValue.name.firstName}
            onChange={getValue}
          ></input>
        </div>
        <button>Submit</button>
      </form>
    </div>
  );
}
 类似资料:
  • 问题内容: 我有一个对象,它可以是任何数量的深度,并且可以具有任何现有属性。例如: 在此我想设置(或覆盖)属性,如下所示: 属性字符串可以具有任何深度,并且值可以是任何类型/事物。 如果属性键已经存在,则不需要合并对象和数组作为值。 前面的示例将产生以下对象: 如何实现这种功能? 问题答案: 此函数使用您指定的参数应添加/更新容器中的数据。请注意,您需要跟踪架构中的哪些元素是容器,哪些是值(字符串

  • 我有一个对象,可以是任何数量的层次深,可以有任何现有的属性。例如: 在此基础上,我希望设置(或覆盖)如下属性: 属性字符串可以有任何深度,值可以是任何类型/事物。 如果属性键已经存在,则不需要合并作为值的对象和数组。 上一个示例将生成以下对象: 如何实现这样的功能?

  • 问题内容: 有没有一种方法可以设置javascript对象的默认属性,例如: IE可以忽略,Chrome Frame减轻了我的头痛。 问题答案: 自从几年前我问这个问题以来,事情进展顺利。 代理是ES6的一部分。以下示例可在Chrome,Firefox,Safari和Edge中运行:

  • 如何处理对象的javascript数组,例如: 并通过求和这些值合并重复的键。为了得到这样的东西: 我尝试过迭代并添加到一个新数组中,但这没有起到作用:

  • 我是骆驼的新手,我被困在一个似乎很简单的问题上。我需要解组交换中的2个XML,然后将相应的POJO传递给处理器。我在考虑是否可以取消整理一个xml,将其设置为一个属性作为交换,并对另一个xml重复相同的属性。最后,在处理器中,我将检索属性,并可以在处理器中执行所需的逻辑。我能够成功地解组XML的,并获得exchange.in.body中的最后一个POJO。但是有人能告诉我在exchange属性中设

  • 在 PowerShell 中,如何通过指定对象的名称(字符串)来获取对象的属性值?我想要类似这样的东西: 是否有类似于“获取属性名称”的内容?