Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数组分配给状态变量?_Javascript_Reactjs_Typescript_Jsx - Fatal编程技术网

Javascript 如何将数组分配给状态变量?

Javascript 如何将数组分配给状态变量?,javascript,reactjs,typescript,jsx,Javascript,Reactjs,Typescript,Jsx,我有一个函数如下所示: select(e) { let { selectedItems } = this.state; let arr: number[] = []; for (var i = 0; i < 2; i++) arr = [...arr, i]; this.setState( { selectedItems: arr, } ); console.log(selectedItems);

我有一个函数如下所示:

select(e) {
    let { selectedItems } = this.state;

    let arr: number[] = [];
    for (var i = 0; i < 2; i++) arr = [...arr, i];

    this.setState(
      {
        selectedItems: arr,
      }
    );
  console.log(selectedItems);
  }
选择(e){
让{selectedItems}=this.state;
设arr:number[]=[];
对于(var i=0;i<2;i++)arr=[…arr,i];
这是我的国家(
{
selectedItems:arr,
}
);
console.log(selectedItems);
}

但是当我尝试
console.log(selectedItems)
时,我得到的只是一个空数组。当我
console.log(arr)
时,我得到了我想要的正确输出——一个长度为2的数组。这里可能发生的情况以及如何将
selectedItems
分配给
arr
的值?

setState
采用回调函数。请尝试以下操作:

  select(e) {
    let { selectedItems } = this.state;

    let arr: number[] = [];
    for (var i = 0; i < 2; i++) arr = [...arr, i];

    this.setState({
      selectedItems: arr,
    }, function(){
        console.log(this.state);
    }.bind(this));
  }


选择(e){
让{selectedItems}=this.state;
设arr:number[]=[];
对于(var i=0;i<2;i++)arr=[…arr,i];
这是我的国家({
selectedItems:arr,
},函数(){
console.log(this.state);
}.约束(这个);
}

设置状态
采用回调函数。请尝试以下操作:

  select(e) {
    let { selectedItems } = this.state;

    let arr: number[] = [];
    for (var i = 0; i < 2; i++) arr = [...arr, i];

    this.setState({
      selectedItems: arr,
    }, function(){
        console.log(this.state);
    }.bind(this));
  }


选择(e){
让{selectedItems}=this.state;
设arr:number[]=[];
对于(var i=0;i<2;i++)arr=[…arr,i];
这是我的国家({
selectedItems:arr,
},函数(){
console.log(this.state);
}.约束(这个);
}
A类{
选择(e){
让{selectedItems}=this.state;
设arr:number[]=[];
对于(var i=0;i<2;i++)arr=[…arr,i];
这是我的国家({
selectedItems:arr
},函数回调(){
console.log(this.state)//将具有更新的值
});
console.log(selectedItems);//不会打印任何内容,因为您从不分配
selectedItems=arr;
console.log(selectedItems);//将具有更新的值
}
}
A类{
选择(e){
让{selectedItems}=this.state;
设arr:number[]=[];
对于(var i=0;i<2;i++)arr=[…arr,i];
这是我的国家({
selectedItems:arr
},函数回调(){
console.log(this.state)//将具有更新的值
});
console.log(selectedItems);//不会打印任何内容,因为您从不分配
selectedItems=arr;
console.log(selectedItems);//将具有更新的值
}
}

您在哪里/何时登录?(我不理解您的示例代码。)
setState
是异步的。作为一个数组是不相关的<代码>设置状态不关心类型。您在哪里/何时登录?(我不理解您的示例代码。)
setState
是异步的。作为一个数组是不相关的
setState
不关心类型。这不起作用,您需要将
This
关键字绑定到该回调函数。检查下面的答案。未绑定且似乎有效这将不起作用,您需要将
this
关键字绑定到该回调函数。请检查下面的答案。没有束缚,似乎在工作谢谢,我真傻,我才意识到这就是我一直以来所错过的,我真傻,我才意识到这就是我一直以来所错过的