[英]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.