当前位置: 首页 > 面试题库 >

反应将此绑定到类方法

勾炜
2023-03-14
问题内容

所以我正在读一本关于React的书,说我必须像这样绑定我的方法

this.onClickMe = this.onClickMe.bind(this);

但看起来不用上面的代码就可以正常工作

class ExplainBindingsComponent extends Component {
  onClickMe() {
    console.log(this);
  }
  render() {
    return (
      <button
        onClick={ () => { this.onClickMe() } }
        type="button"
      >
        Click Me
  </button>
    );
  }
}

但这是说我应该做这样的事情,

class ExplainBindingsComponent extends Component {
  constructor() {
    super();
    this.onClickMe = this.onClickMe.bind(this);
  }
  onClickMe() {
    console.log(this);
  }
  render() {
    return (
      <button
        onClick={this.onClickMe}
        type="button"
      >
        Click Me
  </button>
    );
  }
}

this.onClickMe = this.onClickMe.bind(this);仍然是我必须做的?如果可以的话,与上面的例子相比,它能做什么


问题答案:

有多种方法可以将函数绑定到React类的词法上下文,

  • 一种这样的方法是将其绑定到构造函数中,

  • 另一种方法是将类字段用作箭头函数,并且

  • 使用.bind或arrow在渲染中绑定的第三种方法,

每个都可以使用,但是最好避免在渲染中绑定,因为每个渲染都会返回一个新函数

使用类字段作为箭头功能。

class ExplainBindingsComponent extends Component {
  onClickMe = () => {
    console.log(this);
  }
  render() {
    return (
      <button
        onClick={ this.onClickMe }
        type="button"
      >
        Click Me
  </button>
    );
  }
}

绑定渲染

onClick={() => this.onClickMe() }

要么

onClick={this.onClick.bind(this)}


 类似资料:
  • 问题内容: 我有一个React应用程序,我正在尝试使用来自javascript文件的数据来构建Navbar组件。 我的NavbarData.js文件如下所示: 我正在遍历此数据并在App.js文件中创建组件。 这是我的NavbarItem.js文件 从’react’导入React,{组件}; 所有这些使我看起来像这样。太好了 但我想为每个按钮添加一个监听器。由于这是一个单页应用程序,因此我想呈现一

  • 我试图将子类属性绑定到GridViewColumn。我有一个母类M1和三个不同的子类S1、S2和S3。GridViewColumn由类M1的对象填充。我希望将S2的一个属性绑定到这个GridViewColumn的头,而M1中没有实现这个属性。 有人能给我解释一下怎么做吗?

  • 有没有一种方法可以直接将memcached绑定到它下面的本地存储?将用一个例子来解释。假设hbase被用作分布式的后端。memcached的一层被用作缓存层,它可以被认为是hbase的一个完全副本(在某种意义上)。假设系统中有4个节点,其中3个用于hbase并在其顶部有一个memcached层,1个节点用于计算。通常的规范是查找memcached是否有某个键。如果有,取出来并用于计算。如果没有,则

  • 问题内容: 我有一个React组件,可以在其中遍历列表并创建行。每行中都有一个删除按钮。单击删除按钮后,我想将引用传递给该行中的元素。 因此,为了在点击处理程序中保留this值;我对map()和click-handler都使用bind。 这是将参数传递给React中的处理程序的正确方法还是有更好的方法? 问题答案: 我现在还很陌生,但我想我可以把它扔在这里以提供帮助。 我认为您需要更改此行, 至

  • 我有一个带有REST方法的控制器类,可以抛出各种异常。我已经决定在一个单独的类中处理这些异常,在我的处理程序方法中使用@ControlllerAdwn和@ExceptionHandler。但是,我有一个问题,我的REST方法使用另一个库的注释。此库捕获REST方法引发的异常。现在,我正在全局处理异常,而不是直接通过REST方法中的试/捕获,我的异常总是被其他库捕获,而不是被我自己的处理程序方法捕获

  • 本文向大家介绍Python类绑定方法及非绑定方法实例解析,包括了Python类绑定方法及非绑定方法实例解析的使用技巧和注意事项,需要的朋友参考一下 一、绑定方法   1.对象的绑定方法   首先我们明确一个知识点,凡是类中的方法或函数,默认情况下都是绑定给对象使用的。下面,我们通过实例,来慢慢解析绑定方法的应用。   从上面的输出结果来看,talk()這个类中的方法,是绑定给对象使用的。下面,我在

  • 问题内容: 我们有一个普通的独立spring应用程序,需要将jdbc数据源放在jndi中。(我们使用jboss treecache,它需要数据源位于jndi中)。 一些谷歌搜索人员发现了大多数使用Spring的jndi查找示例,其中已经在jndi中放置了一个对象(通过tomcat或应用服务器等),但是我们需要另外的方法:我有一个简单的数据源Spring bean,我将其注入到其他服务中,但我无法将

  • 如何将MVVM值绑定到dropdownlist?下面的输入元素运行良好