【问题标题】:React calling callback function infinity反应调用回调函数无穷大
【发布时间】:2018-09-19 14:46:19
【问题描述】:

我是 React 新手。我正面临回调函数无限调用的问题。

我的组件 A 具有函数 handleAssignUser()。

handleAssignUser = (id) =>{
    console.log(id);
    this.setState({user_id:id});
  }

我将此函数作为回调传递给组件 B。

<AssignTaskUserList usersLists={this.state.usersLists} callBack={()=>this.handleAssignUser} />

在组件 B 上。我必须在 componentWillReceiveProps() 和选择用户时调用此函数。

componentWillReceiveProps(nextProps) {
      this.funUserAssignTo(loginUser);
}

<button key={user._id} className="dropdown-item" type="button" onClick={(e)=>this.funUserAssignTo(user)}><span>{user.name}</span></button>


funUserAssignTo(user = ""){
    var self = this;
    if(General.notEmpty(user)){
      this.setState({
        selectedUser: user
      },() => {self.props.callBack(user._id)});
    }
  }

这是无限调用回调函数。请建议我哪里做错了。

【问题讨论】:

    标签: reactjs callback


    【解决方案1】:

    callBack={()=&gt;this.handleAssignUser} 不正确 这等于

    () => {
      this.handleAssignUser; // not running
    }
    

    改用callBack={this.handleAssignUser}

    【讨论】:

    • 我已经试过了,还是不行。函数调用无限。
    • 您的self.props.callBack 是否更改了componentB 的道具?当道具更新时,它会再次调用componentWillReceiveProps,尝试使用if (this.props.sth !== nextProps.sth)检查你的目标道具是否更新,然后在componentWillReceiveProps中调用this.funUserAssignTo
    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2020-11-19
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多