javascript - react这个bind是不是多余的 ?
伊谢尔伦
伊谢尔伦 2017-04-11 11:06:48
[JavaScript讨论组]
  constructor(props) {
    super(props);
    this.render = this.render.bind(this);
    this.state = {
      items: this.props.items,
      disabled: true
    };
  }
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
PHP中文网

你这个 bind 是多余的,因为 render 方法是React加载时自己调的, this 本来就是 component 实例

需要的情况

当使用 es6 的 class 的写法来写 component 时,事件绑定中的this会指定当前标签的props, 这时需要使用 这种 bind 绑定到 component,以便在回调中使用 this 的方法比如setState,参考 Autobinding

class SayHello extends React.Component {
  constructor(props) {
    super(props);
    // This line is important!
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    alert('Hello!');
  }

  render() {
    // Because `this.handleClick` is bound, we can use it as an event handler.
    return (
      <button onClick={this.handleClick}>
        Say hello
      </button>
    );
  }
}

怎么不用 bind

如果你用 babel 的话可以添加安装这个 transform-class-properties,(或者react提供的create-react-app,默认已经包含了)

npm install --save-dev babel-plugin-transform-class-properties
# 还有在 babelrc 或者配置中添加
"plugins": ["transform-class-properties"]

写法就变成

class SayHello extends React.Component {
  handleClick = () => {
  }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号