This.setState导致浏览器挂起+ Reactjs
问题描述:
var columns = []
for (var key in this.props.col)
{
if (this.state.isEditing){
columns.push(<td key = {key.id}><input ref = "txt" type = "text" value = { this.state.itemValue } onChange = { this.onTextChange.bind(this) } /></td>)
}
else
{
columns.push(<td key = {key.id}>{ this.props.col[key] }</td>)
// this.setState({
// itemValue: key,
// isEditing: false
// })
console.log(key)
}
console.log(key);
}
return columns
每次我去掉这一行:This.setState导致浏览器挂起+ Reactjs
// this.setState({
// itemValue: key,
// isEditing: false
// })
它会导致浏览器挂起。浏览器上会显示一条表示“此页面上的脚本可能正忙”的模态消息,并询问我是停止脚本还是继续。谢谢。
答
每次你“的setState”,您的组件将重新描绘,我想你的功能是在呈现阶段调用(因为它似乎建立列)
你是如何调用这段代码。 –
您具体在哪里设置状态?记住,默认情况下,当你setState时,render()被调用。所以如果你在render()中设置状态,你将会有这个永无止境的循环。 – Dan
只是一些一般的反馈,你应该避免使用String'ref',因为它们被认为是遗留的,并且很可能会从React中删除。相反,你应该使用'ref = {(input)=> {this.input = input}} – Dan