Javascript 如何修复React Native setState错误?

Javascript 如何修复React Native setState错误?,javascript,typescript,react-native,Javascript,Typescript,React Native,首先,我为我糟糕的英语道歉。我正在使用UI Kitten的select组件。当我更改它时,每个项目都会失败 这是错误的 “警告无法在现有状态下更新” 我正在与您分享示例代码 const data = [ "test 1", "test 2" ]; constructor(props) { super(props); this.state = { selectedIndex: new IndexPath(0),

首先,我为我糟糕的英语道歉。我正在使用UI Kitten的select组件。当我更改它时,每个项目都会失败

这是错误的

“警告无法在现有状态下更新”

我正在与您分享示例代码

const data = [
  "test 1",
  "test 2"
];

constructor(props) {
  super(props);    

  this.state = {      
    selectedIndex: new IndexPath(0), 
    displayValue: null
  };    
}

componentDidMount() {
  this._handleSetSelectedIndex = this._handleSetSelectedIndex.bind(this);
}

_handleSetSelectedIndex(value) {
  this.setState({selectedIndex: value});
}
在渲染功能上

<Select
  style={{ width: 300 }}
  placeholder='Default'
  value={data[this.state.selectedIndex.row]}
  selectedIndex={this.state.selectedIndex}
  onSelect={index => this._handleSetSelectedIndex(index)}>
  {data.map((key, value) => {
      return (
        <SelectItem key={value} title={key}/>
    );
  })}
</Select>
this.\u handleSetSelectedIndex(索引)}>
{data.map((键,值)=>{
返回(
);
})}
我觉得这句话有问题

请尝试
onSelect={this.\u handleSetSelectedIndex}

另外,在该函数中添加一个
console.log
,查看当您选择一个新项目时它是否会触发

同样值得一试的是,在他们的教程之后,首先在Select上重现基本的

     <Select
        selectedIndex={selectedIndex}
        onSelect={index => setSelectedIndex(index)}>
        <SelectItem title='Option 1'/>
        <SelectItem title='Option 2'/>
        <SelectItem title='Option 3'/>
      </Select>
setSelectedIndex(索引)}>

问题是程序无法更新渲染内部的状态。它通过无限循环,因此“selectedIndex”必须有一个事件处理函数来处理何时设置它。

调用setSelectedIndex时,传递索引,但它是事件对象。使用此合成:

onChange={(event) => this._handleSetSelectedIndex(event)}> 

请参阅操场上的完整示例:

不确定它是否相关,但您应该在构造函数中而不是在
componentDidMount中将方法绑定到类
onChange={(event) => this._handleSetSelectedIndex(event)}>