代码之家  ›  专栏  ›  技术社区  ›  Taohidul Islam

为什么我们需要在react native中绑定函数?

  •  2
  • Taohidul Islam  · 技术社区  · 6 年前

    我正在做一个react本地项目。在一些教程中,我看到绑定这样的方法:

    constructor(props){
    super(props);
    this.my_function = this.my_function.bind(this);
    }
    

    我的问题是我是否可以使用 this.my_function 那我为什么要再绑一次?我有Java和Python的背景,可能这就是为什么我对这种类型的方法绑定感到困惑。 注意:我知道如果我不在react native/react js中绑定方法,我的方法将无法正常工作。我只想知道为什么我需要这个额外的绑定。

    4 回复  |  直到 6 年前
        1
  •  4
  •   Bruno Mazzardo    6 年前

    看看这个链接,了解js闭包是如何工作的

    http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/

    您需要绑定函数,以便它可以访问类中的状态和其他变量,而不仅仅是执行时传递的参数。

        2
  •  1
  •   Rehan Umar    6 年前

    好吧,你需要捆绑 this 到类的方法。以便可以访问方法体中的obj副本。

    特殊参数 将自动在方法的主体中可用,如果它是这样调用的。

    对象My_函数();

    在这种情况下,obj被传递给 参数,您可以使用 obj.propertyName .

    但是在你的例子中,你的类方法 my_function 很可能是由于某个事件而调用的。你需要用这个例子绑定类的一个实例。

    希望有帮助。

    我强烈建议你经历一下 resource 为了更好的理解。在前面的回答中也提到过。

        3
  •  1
  •   HoCo_    6 年前

    我知道这都是关于javascript中的作用域和上下文。深入理解javascript中的作用域是如何工作的,可以让您构建更强大的应用程序和更干净的代码。

    基本上,bind允许您将函数粘贴到给定的上下文。它允许您访问存储在特定作用域中的值,在reactjs中通常是构造函数作用域。

    您也可以阅读这篇文章,一篇很好的文章介绍了bind方法。

    http://reactkungfu.com/2015/07/why-and-how-to-bind-methods-in-your-react-component-classes/

    也可以看看这个讨论,也许它会对你有用:

    https://stackoverflow.com/a/38334183/9638302

        4
  •  0
  •   Shubhanu Sharma    6 年前

    您将在react中使用es6类,因此类将拥有自己的方法和变量。所有这些方法都可以在 this 如果一个方法想要访问另一个类的方法 因为允许访问 我们需要 bind(this) 用这种方法。

    如果你很懒,那么你可以使用箭头函数来自动绑定 .

    class helloWorld extends Component {
         foo = () => {
            console.log(this);
         }
    }