React-Native: 无法将状态中数组的大小设置为状态中另一个数组的大小。

我的状态中有一个名为 purchaseItems 的数组,它的值目前是硬编码的。我有另一个名为priceArray的数组,我在状态中初始化为空,我一直试图在componentDidMount()中修改它,使其具有purchaseItems数组的长度,并且用零填充。我一直试图这样做的方法是获取 purchaseItems 的长度,创建一个名为 newArray 的 priceArray 复制品,使用 for 循环将 0 推入 newArray,直到它与 purchaseItems 长度相同,然后通过 setState 将 newArray 追加到 priceArray。然而,当我通过 console.log 检查 priceArray 时,它仍然是空的。这可能是为什么呢?我在下面附上代码。

注意:我打算最终从db中填充purchaseItems,所以purchaseItems数组的长度不会总是相同的,所以这就是为什么我没有硬编码的原因,比如说,如果purchaseItems的长度为5,那么价格Array的数组就会充满零,长度为5。

来自我的状态的代码。

  state = {};
  constructor(props) {
    super(props);
    this.state = {
      purchaseItems: [redacted],
      priceArray: [],
    };
  }

代码来自我的 componentDidMount():

  componentDidMount() {
    console.log("Purchase Items: " + JSON.stringify(this.state.purchaseItems));
    const numItems = this.state.purchaseItems.length;
    console.log("numItems: " + numItems);
    var newArray = this.state.priceArray.slice();
    console.log("initialized newArray: " + JSON.stringify(newArray));
    var i;
    for (i = 0; i < numItems; i++) {
      newArray.push(0);
    }
    console.log("populated newArray: " + JSON.stringify(newArray));
    this.setState({ priceArray: [...this.state.priceArray, newArray] });
    console.log("priceArray: " + JSON.stringify(this.state.priceArray));
  }

终端:

Purchase Items: [redacted]
numItems: 6
initialized newArray: []
populated newArray: [0,0,0,0,0,0]
priceArray: []

解决方案:

设置状态的 priceArray 适当

this.setState({ priceArray: [...this.state.priceArray, ...newArray] },()=>console.log(his.state.priceArray));

你也可以在一行中完成整个操作。

this.setState({priceArray:(new Array(this.state.purchaseItems.length)).fill(0))},()=>console.log(his.state.priceArray))

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何将经纬度信息加载到cesium kmlDataSource中?

2022-9-13 15:13:44

未分类

用bool()建立一个列表的结果

2022-9-13 15:13:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索