在react render中调用方法

时间:2018-06-20 10:42:51

标签: javascript reactjs

如果this.props.models数组中只有1个项目,我试图自动调用onModelSelect方法

如果我将方法附加到onClick事件处理程序上,它将起作用,但是就我自己而言,我不确定使用的语法

如果我使用语法

this.onModelSelect(model.id))

然后我得到了错误:

  

setState(...):在现有状态转换期间无法更新(例如   如内幕)。渲染方法应该是道具的纯粹功能   和状态。

但是它确实输出到console.log

因此,我试图像使用onClick事件处理程序()=>this.onModelSelect(model.id))一样调用它,但这不会向console.log输出任何信息

用来调用我的方法的正确语法是什么?

 export default class App extends Component {
        onModelSelect = (modelId) => {
          this.props.selectModel(modelId);
          this.props.setModelSelected(true);
          console.log('test')
          console.log('modelId',modelId)
        }
        render() {
          return(
            <div>
              {this.props.models.length === 1 && this.props.models.map(model => ()=>this.onModelSelect(model.id))}
              {this.props.models.map(model =>
                <div onClick={()=> this.onModelSelect(model.id)}>Select Model</div>
              )}
            </div>
          )
        }
      }

1 个答案:

答案 0 :(得分:0)

您可以在父组件中执行以下操作:检查模型数组的状态/道具的长度是否为1,然后设置状态,这是通过调用道具提供的方法来完成的。您可以在设置模型数组的状态或接收模型数组的道具时执行此操作。