我正在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
});
});
};
但是当设置状态时,我只能将新元素而不是先前的状态推入数组。我尝试使用concat
,spread
并设置一个新数组。卡住了,请帮忙。 :(
答案 0 :(得分:0)
首先声明您的状态,例如:
this.state = {
results: []; // Don't use = for properties
}
第二次注意,如果您setState()
使用它已经具有的相同值,则它不会设置状态(并调用渲染函数)。