gpt4 book ai didi

javascript - 我遇到过的最奇怪的问题。数组在 push 语句之前获取值

转载 作者:行者123 更新时间:2023-12-01 16:16:56 24 4
gpt4 key购买 nike

我正在从事一个电子商务项目,在客户地址部分遇到了一个奇怪的问题。我从客户那里获取输入并在单击按钮时运行此功能。 (使用 Reactjs)

我正在从父组件获取客户信息。

代码:

saveNewAddress = () => {
var allAddress = this.props.currentCustomer.address?this.props.currentCustomer.address:[]
console.log(allAddress) // THIS GIVES ARRAY WITH ALREADY PUSHED OBJECT WHICH I'VE DEFINED BELOW
const addressOBJ = {
streetAddress: this.state.streetAddress,
city: this.state.city,
state: this.state.state,
pincode: this.state.pincode,
country: this.state.country,
full_name:this.state.firstName + " " + this.state.lastName,
email_address:this.props.currentCustomer.email,
contact_number:this.props.currentCustomer.mobileNumber,
}
allAddress.push(addressOBJ) // ACTUAL PUSH COMMAND
const body = {
address:allAddress,
customer_ID:this.props.currentCustomer.customer_ID
}
}

我在这里面临两个问题:

  1. 当我运行这个函数时,this.props.currentCustomer.address 数组也被填充了一个新的地址对象。我只是将客户地址数组存储在一个新变量中,并将新内容推送到该变量中,但我不知道该对象是如何被推送到该变量以及我的 props 数组中的。
  2. 即使在将对象插入 allAddress 数组之前,如果我对它进行 console.log,它也会提供一个包含插入值的新数组。我已经定义了对象,然后将其推送到数组中,但是当我在控制台记录数组时在第二行,它给了我已经推送的数据。这怎么可能?

我试过空运行代码,但无法找到任何解决方案。请帮忙。

最佳答案

阅读更多关于 JS References 的信息和 making deep/shallow copy

  1. 您的 allAddress 实际上是对 this.props.currentCustomer.address 的引用,因此更改 allAddress 也会更改 this。 props.currentCustomer.address(作为引用行为)。你需要复制它。例如。 ..? JSON.parse(JSON.stringify(this.props.currentCustomer.address)) : []

  2. 在浏览器有时间 时处理日志记录(异步)。这就是它在 分配完成后记录的原因。尝试像 console.log(JSON.stringify(allAddress))

    这样的东西

关于javascript - 我遇到过的最奇怪的问题。数组在 push 语句之前获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63030022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com