簡體   English   中英

React Native:如果你使用箭頭函數,是否需要使用 bind(this)?

[英]React Native: if you use arrow functions, is there ever a need to use bind(this)?

我知道在 ES6 中,箭頭函數沒有自己的this屬性。 這是否意味着您不再需要在 React Native 中的任何 function 上使用.bind(this) 如果沒有,你能給我一個你仍然需要使用.bind(this)的場景嗎?

簡單回答,NO,如果你使用ES6語法聲明class方法,那么其中的this會自動綁定到當前的class實例:

class MyComponent extends React.Component {
  myMethod1 = () => {
    ...
  }
  myMethod2 = () => {
    ...
  }
}

這就是 javascript 使用this關鍵字的原因和方式。 所以你不需要。 並且提到這一切都取決於你,假設你以非 ES6 方式聲明一個方法,那么你必須綁定它。

希望能幫助到你。 毫無疑問

沒有必要,它也不會完成任何事情。 箭頭函數無法更改其this ,因此.bind()的第一個參數將被完全忽略。

.bind()仍然可以用於將 arguments 綁定到 function 調用,例如: setTimeout(myFunction.bind(null, myVariable), 100) 當然,這與編寫setTimeout(() => myFunction(myVariable), 100)本質上是一樣的

使用它們仍然更好,您甚至可以使用為您完成工作的模塊(反應自動綁定)。

因為假設您將方法( callback()作為概率)從父組件傳遞給子組件....

當您從帶有或不帶箭頭的子組件內部調用該方法時,您會收到錯誤消息(不是未定義,而是錯誤的,並且可能找不到父組件中的某些屬性,例如this.state.oncallback ,這將是callback()的主要目的)因為詞法環境將是子組件之一。

所以首先將它綁定到父級幾乎總是正確的做法:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM