Javascript 类/功能组件,内部的方法

Javascript 类/功能组件,内部的方法,javascript,reactjs,class,react-functional-component,Javascript,Reactjs,Class,React Functional Component,我对ReactJs还很陌生,我正在尝试了解更多的细节 在类组件中,我知道有两种方法可以声明处理程序方法来更改状态 classChangeState=()=>{ this.setState({ Person:[ {firstName:"test", secondName:55} ] }) } classChangeState2(){ console.

我对ReactJs还很陌生,我正在尝试了解更多的细节

在类组件中,我知道有两种方法可以声明处理程序方法来更改状态

 classChangeState=()=>{
         this.setState({
             Person:[
                 {firstName:"test", secondName:55}
             ]
         })
     }

classChangeState2(){
    console.log("Inside Change state click")
    this.setState({
         Person:[
             {firstName:"test", secondName:55}
         ]
     })enter code here
 //classChangeState2 require me to bind "this" inside render method
在功能组件中,我可以用以下两种方法来实现

    function changeStateClick(){
            changeState({
             Person:[
                {firstName: "Just aasefaesfstring property", secondName: 32}
            ]
        })
        }

    const changeStateClick2 =()=> changeState({
             Person:[
                {firstName: "Just a[[[string property", secondName: 32}
            ]
        })
我有几个问题 1) React如何知道classChangeState2是一个没有“函数”的方法

2) 我知道我可以在上面的所有方法中作为参数传入一个新名称,但是我必须在所有方法的渲染中绑定“THIS”。例如 bind(这是“newNamehere”)

为什么会这样?即使对于最初我不需要绑定的功能组件,当我想添加“newName”作为参数时,我现在也必须绑定。有人能解释一下吗

classChangeState=(newName)=>{
         this.setState({
             Person:[
                 {firstName:newName, secondName:55}
             ]
         })
     }
我有几个问题1)React如何知道classChangeState2 是没有“函数”的方法吗

这与反应无关,但与ES6有关。类是语法上的糖,它们只是特殊的函数。你所看到的方法只是一个函数的简写,它被分配给一个方法的名字。所以当你写这篇文章时:

   class fooClass {
    bar(...) {} 
   }
fooClass
实际上是一个函数,其中的方法,例如
bar
被写入
fooClass.prototype
。还有,你想看看

从ECMAScript 2015开始,方法的较短语法 介绍了对象初始值设定项的定义。这是速记 对于指定给方法名称的函数

你可以在网上浏览更多

关于问题的第二部分

2) 我知道我可以在所有的 但是我必须在渲染中绑定“THIS” 方法。例如methodName.bind(这是“newNamehere”)

此语法是实验类属性,您可以使用此语法而不是
bind
ing构造函数中的方法。请注意,此语法可能会更改

阅读更多

我有几个问题1)React如何知道classChangeState2 是没有“函数”的方法吗

这与反应无关,但与ES6有关。类是语法上的糖,它们只是特殊的函数。你所看到的方法只是一个函数的简写,它被分配给一个方法的名字。所以当你写这篇文章时:

   class fooClass {
    bar(...) {} 
   }
fooClass
实际上是一个函数,其中的方法,例如
bar
被写入
fooClass.prototype
。还有,你想看看

从ECMAScript 2015开始,方法的较短语法 介绍了对象初始值设定项的定义。这是速记 对于指定给方法名称的函数

你可以在网上浏览更多

关于问题的第二部分

2) 我知道我可以在所有的 但是我必须在渲染中绑定“THIS” 方法。例如methodName.bind(这是“newNamehere”)

此语法是实验类属性,您可以使用此语法而不是
bind
ing构造函数中的方法。请注意,此语法可能会更改

阅读更多


你真的很想花点时间来完成它——它写得很好,实际上涵盖了所有的基础知识,而且你在事后反应方面做得更好。打开一个代码编辑器,实际运行示例,学习React。这段时间花得很好。是的,我确实经历过,但我觉得在一些我仍然迷路的地方不够详细,我得到了道具和组件工作的总体流程,但我觉得有时我想得太多,这会使我的大脑变得过于复杂。关于我的问题,我也浏览了文档,但两者之间仍然有漏洞。无论如何,谢谢!另一个问题是,你还需要一个关于现代JS的好教程(不是那些仍在教授1998年无意义JS的教程中的任何一个),来解释现代构造(如类、箭头函数等)是如何工作的,以及何时使用它们,以及为什么(例如:如果您不需要保留
的含义,那么使用箭头函数毫无益处).你真的想花点时间来完成它-它写得很好,实际上涵盖了所有的基础知识,而且你在事后反应方面做得非常好。打开一个代码编辑器,实际运行示例,学习反应。时间花得很好。是的,我确实经历了这一点,但我觉得在一些我仍然迷路的部分,它不够详细,我et道具和组件的整体工作流程,但我觉得有时我想得太多,这会使我的大脑变得过于复杂。关于我的问题,我也浏览了文档,但两者之间仍然有漏洞。无论如何,谢谢!另一个问题是,你还需要一个关于现代JS的好教程(不是所有仍然教授1998年胡说八道JS的人),来解释类、箭头函数等现代构造是如何工作的,何时使用它们,以及为什么(例如:如果你不需要保留
的意思,那么使用箭头函数毫无益处).谢谢你,我想得太多了,没有想到一门课是怎么回事。我现在完全明白了!谢谢你,我想得太多了,没有想到一门课是怎么回事。我现在完全明白了!