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 
      // }) 

它会导致浏览器挂起。浏览器上会显示一条表示“此页面上的脚本可能正忙”的模态消息,并询问我是停止脚本还是继续。谢谢。

+0

你是如何调用这段代码。 –

+0

您具体在哪里设置状态?记住,默认情况下,当你setState时,render()被调用。所以如果你在render()中设置状态,你将会有这个永无止境的循环。 – Dan

+0

只是一些一般的反馈,你应该避免使用String'ref',因为它们被认为是遗留的,并且很可能会从React中删除。相反,你应该使用'ref = {(input)=> {this.input = input}} – Dan

每次你“的setState”,您的组件将重新描绘,我想你的功能是在呈现阶段调用(因为它似乎建立列)