【问题标题】:How can I take a values of one object and put them into another object如何获取一个对象的值并将它们放入另一个对象
【发布时间】:2021-07-18 09:06:55
【问题描述】:

嘿,伙计们,我遇到了以下挫折,我正在尝试在已经填充了另一个值的对象的空值上写入,以便以后可以使用它们,我已经定义了对象,我正在尝试用新的值重新分配值在我从 API 调用收到它们之后,问题是我收到的对象与来自 API 调用的对象相同,我不需要那个,我需要我创建的相同结构,因为发生这种情况我正在使用 useState。你能指出我正确的方向吗? 那是我的代码,之后我总是得到结果

API调用前deliveryAddressInput的初始状态

const [deliveryAddressInput, setDeliveryAddressInput] = useState<NewAddressDetails>({});

API调用后的结果是setDeliveryAddressInput(adress):

BuildingName: "18A"
BuildingNumber: ""
City: "Houghton Le Spring"
Line1: "18A Nesham Place"
Line2: ""
Line3: ""
PostalCode: "DH5 8AG"

从顶部开始映射对象的初始状态:

const [newAddress, setNewAddress] = useState<{}>({
    firstName: firstNameInput,
    lastName: lastNameInput,
    houseNo: deliveryAddressInput.BuildingNumber,
    houseName: deliveryAddressInput.BuildingName,
    street: deliveryAddressInput.Line1,
    addressLine2: deliveryAddressInput.Line2,
    town: deliveryAddressInput.City,
    postCode: deliveryAddressInput.PostalCode,
  });

useState 函数:

useEffect(() => {
    setTimeout(() => {
      setNewAddress(deliveryAddressInput);
    });
  }, [deliveryAddressInput]);

并且最终的结果和API调用的结果一样:

BuildingName: "18A"
    BuildingNumber: ""
    City: "Houghton Le Spring"
    Line1: "18A Nesham Place"
    Line2: ""
    Line3: ""
    PostalCode: "DH5 8AG"

我正在尝试接收将 API 调用的值映射到新对象键的以下内容:

        firstName: "Jane",
        lastName: "Smith",
        houseNo: "",
        houseName: "18A",
        street: 18A Nesham Place,
        addressLine2: "",
        town: "Houghton Le Spring",
        postCode: "DH5 8AG",

【问题讨论】:

  • 将 API 调用的结果打印到控制台。你看到了什么?
  • 如您所见,在调用 API 之后有一个示例
  • 好的,我明白了。你从哪里得到名字/姓氏等等?
  • 只有这两个属性来自另一个输入,并且具有相应的 useState

标签: javascript reactjs typescript react-typescript


【解决方案1】:

我想你应该把一个对象转换成另一个对象:

    const convertDeliveryInputIntoAddress = (
      deliveryAddressInput, firstName, lastName
      ) => {
        const {BuildingName, BuildingNumber, City, Line1, PostalCode} = deliveryAddressInput;
        const firstLineSplitted = Line1.split(' ');
        const houseName = firstLineSplitted[0];
        const street = firstLineSplitted.slice(1).join(' ');
        return {firstName, lastName, houseNo: buildingNumber, houseName, street, town: City, postCode: PostalCode};
      }

    ...
    setNewAddress(convertDeliveryInputIntoAddress(deliveryAddressInput, firstName, lastName));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多