У меня есть массив в моем состоянии с именем purchaseItems, значения которого в настоящее время жестко заданы. У меня есть другой массив с именем priceArray, который я инициализировал, чтобы он был пустым в состоянии, и я пытался изменить его в componentDidMount (), чтобы он имел длину массива purchaseItems и был заполнен нулями. То, как я пытался это сделать, это получить длину purchaseItems, создать дубликат priceArray с именем newArray, используя нули от l oop до pu sh в newArray, пока он не будет иметь ту же длину, что и buyItems, а затем добавление newArray к priceArray через setState. Однако priceArray остается пустым, когда я проверяю его через console.log. Почему это может быть? Я приложу код ниже.
Примечание: я планирую в конечном итоге заполнить buyItems из БД, поэтому длина массива purchaseItems не всегда будет одинаковой, поэтому я не пишу жестко, скажем, массив, полный нулей с длиной 5 для priceArray, если buyItems имеет длину 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: []