无法在React Native中的事件触发器上更改状态

时间:2019-08-07 08:47:58

标签: javascript react-native

我正在react-native-voice上调用一个事件以识别语音并调用API并设置状态。但是,当我为状态数组设置新值时,该数组仅具有新值,而不具有先前值。这是我的代码

constructor(props){
  super(props);
  this.state = {
  results = [];
}
Voice.onSpeechResults = this.onSpeechResults;
}

我有一个事件被触发来调用这样的API。

onSpeechResults = e => {
        this._startRecognizing();
        //var joined = this.state.results.concat();
        getProductListingService(e.value[0]).then(data=>{
            let demoVar = Object.values(data);
            var newArray = this.state.results;
            newArray.push(demoVar[1]);
            this.setState({
                results:newArray
            })
           this.setState({
               show:true
           });
        });

    };

但是当设置状态时,我只能将新元素而不是先前的状态推入数组。我尝试使用concatspread并设置一个新数组。卡住了,请帮忙。 :(

1 个答案:

答案 0 :(得分:0)

首先声明您的状态,例如:

this.state = {
  results: []; // Don't use = for properties
}

第二次注意,如果您setState()使用它已经具有的相同值,则它不会设置状态(并调用渲染函数)。