亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

類/功能組件,方法

類/功能組件,方法

蠱毒傳說 2022-09-29 17:45:04
我對 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 如何知道類ChangeState2 是一個沒有“函數”的方法?2)我知道我可以在上述所有方法中傳入newName作為參數,但我必須在所有方法的渲染中綁定“THIS”。例如,對于方法名稱.bind(this,“newNamehere”)這是為什么呢?即使對于功能組件,當我想要添加“newName”作為參數時,最初我不需要綁定,我現在也必須綁定。有人可以解釋一下嗎?classChangeState=(newName)=>{         this.setState({             Person:[                 {firstName:newName, secondName:55}             ]         })     }
查看完整描述

1 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

我有幾個問題 1) React 如何知道類ChangeState2 是一個沒有“函數”的方法?


它與 React 無關,但與 ES6 無關。類是語法糖,它們只是特殊函數。你所看到的方法只是分配給方法名稱的函數的簡寫。所以當你寫這個的時候:


   class fooClass {

    bar(...) {} 

   }

fooClass實際上是一個函數,其中的方法例如被寫入 。另外,你想看看,barfooClass.prototype


從 ECMAScript 2015 開始,引入了對象初始值設定項上的方法定義的簡短語法。它是分配給方法名稱的函數的簡寫。


 const obj = {

  foo() {

    return 'bar';

  }

};


console.log(obj.foo());

您可以了解有關 MDN 類和函數定義 MDN 的更多信息


來到問題的第二部分,


2)我知道我可以在上述所有方法中傳入newName作為參數,但我必須在所有方法的渲染中綁定“THIS”。例如,對于方法名稱.bind(this,“newNamehere”)


此語法是實驗性類屬性,您可以使用它而不是在構造函數中使用該方法。請注意,此語法可能會更改。bind


閱讀更多 https://reactjs.org/docs/react-without-es6.html#autobinding


https://babeljs.io/docs/en/babel-plugin-transform-class-properties/


查看完整回答
反對 回復 2022-09-29
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號