您可能知道我们可以创建箭头函数作为事件处理程序而不绑定它(使用Babel Stage 2支持) . 在React with Redux中,我们有Smart和Dumb Components . 因此,我想在智能组件中使用 default params (用于可重用性)创建状态修改事件处理程序,并将它们作为道具传递给Dumb Components,详情如下: -

// SmartComponent.js

class SmartComponent extends Component {

  state = {count: 0};

  handleClick = (inc = 1) => this.setState({count: this.state.count + inc});

  render = () => <DumbComponent handleClick={this.handleClick} />
}

// DumbComponent.js

function DumbComponent(props) {
 return <button onClick={props.handleClick}>Submit</button>;
}

问题是我得到一个控制台日志,说明传递的箭头函数是一个对象而不是一个函数 . 如果我们创建如下的箭头函数,或者如果初始箭头函数在DumbComponent中没有 default param ,它将按预期工作 .

// DumbComponent.js

function DumbComponent(props) {
 return <button onClick={() => this.props.handleClick()}>Submit</button>;
}

任何想法/建议,使其无需第二个箭头功能,将非常感激 .