reactjs - 如何在 React 中将函数组作为 props 传递?

标签 reactjs

我仅使用这个简单的 React 组件作为示例。

我想在函数“working”和“group.notWorking”中访问 this.setState()。

var myComponent = React.createClass({
  getInitialState: function() {
    return {};
  },

  working: function() {
    this.setState({ test: true });  //this is myComponent
  },

  group: {
    notWorking: function() {
      console.log(this); //this is window
    }
  },

  render: function() {
    return (
        <div>
          <ChildComponent working={this.working} group={this.group}/>
        </div>
    );
  },
});

我的问题是如何传递分组在一个对象中的函数,或者是否有任何最佳实践,以避免将所有函数一一传递给子组件。

最佳答案

您需要传递它的绑定(bind)版本。

<ChildComponent working={this.working} group={this.group.notWorking.bind(this)}/>

如果你想传递整个组,你需要将其设置为一个返回对象并绑定(bind)它的函数:

group: function() {
    return {
        notWorking: function() {
          console.log(this);
        }.bind(this)
    };
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

关于reactjs - 如何在 React 中将函数组作为 props 传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31452684/

相关文章:

reactjs - 单击卡组件应创建一条新路线并显示更多信息

reactjs - useLayoutEffect 中的 setState

reactjs - 如何将模式应用于 Material ui 输入?

javascript - React - 处理动态内联样式的理想方式

javascript - 如何修改react扩展类?

reactjs - 如何链接到 MUI 迷你抽屉侧边栏中的另一个页面?

jquery - React 中的软滚动顶升

reactjs - 剧作家:如何将环境变量从库传递到管道?

javascript - 输入值完全看不到,为什么?

Spring-MVC 与 ReactJS 集成?