Reactjs 无法将新值推送到prevState数组

Reactjs 无法将新值推送到prevState数组,reactjs,react-native,Reactjs,React Native,每次装入页面时,我都要使用prevState.CheckoutArray+returnListArray设置CheckoutArray。 但国家并没有被设定。 下面是我的代码 this.state = { CheckoutArray: [], }; } componentDidMount() { let returnListArray = []; returnListArray.push(this.props.navigation.state

每次装入页面时,我都要使用prevState.CheckoutArray+returnListArray设置CheckoutArray。 但国家并没有被设定。 下面是我的代码

    this.state = {
      CheckoutArray: [],
    };
  }

  componentDidMount() {
    let returnListArray = [];
    returnListArray.push(this.props.navigation.state.params.itemDetails);
    console.log('returnListArray', returnListArray);
    this.setState(
      prevState => (
        {
          CheckoutArray: [
            ...prevState.CheckoutArray,
            returnListArray,
          ],
        }
      ),
        () => console.log('CheckoutArray', this.state.CheckoutArray)
    );
  }

您在错误的位置回调setState

该命令应适用于:

this.setState(
(prevState)=>({
CheckoutArray:[…prevState.CheckoutArray,returnListArray],
}),
()=>console.log('CheckoutArray',this.state.CheckoutArray),
);
此外,comment中的@Ramesh是正确的,您可能希望将两个数组合并:

this.setState(
(prevState)=>({
CheckoutArray:prevState.CheckoutArray.concat(returnListArray),
}),
()=>console.log('CheckoutArray',this.state.CheckoutArray),
);

您在错误的位置回调setState

该命令应适用于:

this.setState(
(prevState)=>({
CheckoutArray:[…prevState.CheckoutArray,returnListArray],
}),
()=>console.log('CheckoutArray',this.state.CheckoutArray),
);
此外,comment中的@Ramesh是正确的,您可能希望将两个数组合并:

this.setState(
(prevState)=>({
CheckoutArray:prevState.CheckoutArray.concat(returnListArray),
}),
()=>console.log('CheckoutArray',this.state.CheckoutArray),
);

您的语法有问题。这个

 this.setState(
      prevState => (
        {
          CheckoutArray: [
            ...prevState.CheckoutArray,
            returnListArray,
          ],
        },
        () => console.log('CheckoutArray', this.state.CheckoutArray)
      ),
    );
应该是

 this.setState(
      prevState => (
        {
          CheckoutArray: [
            ...prevState.CheckoutArray,
            returnListArray,
          ],
        }
      ), () => console.log('CheckoutArray', this.state.CheckoutArray)

    );

更新状态时调用的回调函数应作为参数传递给
setState
,这不是您要做的。

您的语法有问题。这个

 this.setState(
      prevState => (
        {
          CheckoutArray: [
            ...prevState.CheckoutArray,
            returnListArray,
          ],
        },
        () => console.log('CheckoutArray', this.state.CheckoutArray)
      ),
    );
应该是

 this.setState(
      prevState => (
        {
          CheckoutArray: [
            ...prevState.CheckoutArray,
            returnListArray,
          ],
        }
      ), () => console.log('CheckoutArray', this.state.CheckoutArray)

    );

更新状态时调用的回调函数应作为参数传递给
setState
,这不是您正在做的。

我认为您也应该在returnListArray上使用扩展运算符,以便签出数组将是一个数组而不是数组数组。我认为您也应该在returnListArray上使用扩展运算符,以便签出数组将是一个数组而不是数组数组。谢谢您的帮助。我想用prevState.CheckoutArray+returnList数组中的新值追加(推送)我的签出数组。你能帮帮我吗?因为我每次在签出阵列中只能得到一个项目。谢谢你的帮助。我想用prevState.CheckoutArray+returnList数组中的新值追加(推送)我的签出数组。你能帮帮我吗?因为我每次在签出数组中只能得到一个项目。