重构作为属性从 es5 传递到 es6 的函数
Refactoring functions passed as properties from es5 to es6
我目前正在将我的代码从 es5 重构到 es6,但在重构方面遇到了障碍......
<li className="pure-menu-item" onClick={this.props.onClick}></li>
我将如何在构造函数中绑定创建组件时传递的这个函数?
class NavButton extends React.Component {
constructor () {
super();
this._handleClick = this.props.onClick.bind(this);
}
render() {
return (
<li className="pure-menu-item" onClick={this.props.onClick}>
<a className="pure-menu-link">{this.props.text}</a>
</li>
);
}
_handleClick() {
alert('test');
}
}
您正在对类创建一个_handleClick
方法,但随后在构造函数中用this._handleClick = this.props.onClick.bind(this);
覆盖它,然后通过传递onClick={this.props.onClick}
完全忽略它。
我怀疑你真正想要的是将你的onClick
函数bind
到在该组件的构造函数中拥有它的组件,而不是在它正在传递的组件中。
这会解决您的问题吗?
class NavButton extends React.Component {
render() {
return (
<li className="pure-menu-item" onClick={this.props.handleClick}>
<a className="pure-menu-link">{this.props.text}</a>
</li>
);
}
}
NavButton.propTypes = {
handleClick: React.PropTypes.func,
text: React.PropTypes.string
};
相关文章:
- ES6构造函数返回基类的实例
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- 如何在ES6类中使用参数调用函数
- 使用ES6生成器函数中的返回
- ES6类是否与构造函数相同
- 使构造函数参数具有ES6类方法的特权
- ES6 - 构造函数中的超级必需
- ES6类构造函数参数
- 有没有一种优雅的方式来告诉esint,以确保我们're没有使用任何ES6语法/函数
- 从构造函数es6调用静态方法
- 在ES6中将数组析构函数参数的语法
- 具有默认参数值的 ES6 类构造函数上的 NodeJS 错误
- ES6调用扩展组件函数
- 如何使用ES6将两个具有函数的对象合并为一个新对象
- 从ES6中的函数表达式访问类作用域
- 使用在带有gulp和babel的单独文件中定义的ES6函数
- 将不同的范围绑定到ES6 =>函数操作符
- Eslint返回ES6函数的右值赋值
- 如何简化基于属性组合两个数组的es6函数?
- 这个 ES6 函数的含义或解释是什么?