this.state = {
filterData: [{
attribute: '-1',
filter: '-1',
value: ''
}],
}
_createFilterUI(dataSourceColumns) {
if (this.state.dataSourceIndex == -1)
return <div > Kindly first select Data Source. < /div>
let dataSource = this.state.datasourcelist,
dataType = '';
let filterData = this.state.filterData
let previousfilters = this.state.d3line.chartDataSo.filterDefintions;
console.log(filterData.concat(previousfilters));
this.setState({
filterData: filterData.concat(previousfilters)
})
return this.state.filterData && this.state.filterData.map((el, i) => {
if (el.attribute != -1) {
dataType = dataSource[this.state.dataSourceIndex].columnDescription[el.attribute].JAVA_DATA_TYPE;
}
return (
<div>
{ some content }
</div>)
)
})
}
filterData
是我的状态的一部分。
当我尝试使用filterData.concat(previousfilters)
它没有更新,并且在保持Cannot update during an existing state transition
后出现setState
错误
请任何人指导我如何更新filterdata
状态并解释我做错了什么。
控制台后,我无法正确更新状态。
答案 0 :(得分:1)
我认为这里有两个问题。我无法完全确定,因为没有显示足够的代码,但是我想您是从_createFilterUI
方法或render
调用componentWillUpdate
的。允许您从这些方法中调用其他方法,但在它们之间不允许调用setState
。
此外,setState
does not automatically update the component也是如此,因此在上面的代码段中,您不能依靠在调用setState
之后立即拥有新状态。您将必须在可以提供setState
的回调中或生命周期的另一点完成其余功能。