哪种方法在React中编写Event是更优雅的方法?

Lane Zhao

在编写代码时,我总是想找到一种更优雅的方法。更好的可读性和更高的效率。您更喜欢哪种方法?或者您还有其他更好的方法。

方法1

在我看来,这是一个丑陋的方法,混合代码。

class Layer extends Component {
  render(){
    return (
      <li
        onClick={(event)=>{
          console.log(event.target, this.props.layerId);
          // Some Code
        }}
      >
        {layerName}
      </li>
    )
  }
}

方法2

常用方法。但是每次点击都会创建一个匿名函数。效率?

class Layer extends Component {
  onLayerClick(event){
    console.log(event.target, this.props.layerId);
    // Some Code
  }

  render(){
    return (
      <li
        onClick={(event)=>{
          this.onLayerClick(event);
        }}
      >
        {layerName}
      </li>
    )
  }
}

方法3

我最喜欢的方法。但是需要绑定。

class Layer extends Component {
  onLayerClick(event){
    console.log(event.target, this.props.layerId);
    // Some Code
  }

  render(){
    return (
      <li
        onClick={this.onLayerClick.bind(this)}
      >
        {layerName}
      </li>
    )
  }
}
托勒

非常有见地和基于上下文,但是属性初始化的箭头函数使它成为可能,因此您不必bind在render方法或构造函数中。

class Layer extends Component {
  onLayerClick = (event) => {
    console.log(event.target, this.props.layerId);
  };

  render(){
    return <li onClick={this.onLayerClick}>{layerName}</li>;
  }
}

但是,类属性尚未使用该语言,因此并非所有开发环境都可以访问它们。我认为第二好的选择是bind构造函数中的方法。它比类属性选项要写的要多,但是您不必每次都在render方法中创建一个新函数。

class Layer extends Component {
  constructor(props) {
    super(props);
    this.onLayerClick = this.onLayerClick.bind(this);
  }

  onLayerClick(event) {
    console.log(event.target, this.props.layerId);
  };

  render(){
    return <li onClick={this.onLayerClick}>{layerName}</li>;
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在express.js api路由器中,哪种方法更优雅?

有没有一种方法可以更优雅地编写此“ if”列表?

React 中哪种方法更好?

有没有更优雅的方法可以在Swift中编写这种惰性加载模式?

在C#中编写代码节分隔符的更优雅的方法?

在Angular App中处理过滤值的更优雅方法

在字典中增加值的更优雅的方法

R中的嵌套操作。是否有更优雅的方法?

是编写这段代码的更好,更优雅/更有效的方法

在C ++中暂停-哪种方法?

LINQ中哪种方法更好?

在Java中,哪种方法更好?

哪种方法更好?

更优雅的代码编写方式

在环绕中查找一维阵列网格中的邻居的更优雅方法?

有没有更优雅的方法来编写带有重叠(嵌套)替代方案的语句?

C#更优雅的方法来检查异常是否在指定异常列表中?

有没有更优雅的方法来折叠 dplyr 中的两行?

将空格分隔的文本值读取为整数并浮动到数组中的更优雅的方法?

有没有更优雅的方法来检查freemarker中的变量?

在此uint8数组中搜索模式的更优雅方法

在Django的中间件中忽略静态URL的更优雅的方法?

从 Python 中的十六进制字节对象中提取单个位的更优雅的方法?

有没有更好或更优雅的方法来处理python中的字典循环异常?

在 Kotlin 中是否有更优雅的方法来检查 String 是否是有效的 Int?

从字符串中获取所有唯一项的更优雅的方法?

在F#中执行CultureInvariant Double.parse的更优雅方法

列表理解后是否有更优雅的方法从列表中删除无

哪种方法最适合React Native中的条件渲染?