3
內嵌JavaScript函數後我看到不同的行爲,我不明白爲什麼。從內嵌JavaScript函數出現意外的不同行爲
考慮:
const someFunc = someParam1 => someParam2 => {
// doSomething
}
const someFuncIndirect = someParam2 => {
return someFunc(null)(someParam2)
}
// I expected parameter1 and parameter2 to be interchangeable but they are not
const funcRef1 = someFunc(null)
const funcRef2 = someFuncIndirect
不同行爲的一個例子可以看這裏:https://codesandbox.io/s/0V2VyG7BV
第一個輸入框採用內嵌版本,並且第一後unfocusing輸入框的行爲怪癖字符已被輸入。第二個輸入框使用間接方法,不會遇到這個問題。我還注意到,如果我第一次在第二個輸入框中輸入文本,第一個輸入框中的焦點問題就會消失。
所有的redux-form看起來都和函數引用一樣,就是用它調用React.createElement。父母的調用者在兩者之間是不同的,但我想不出如何導致這種行爲。我錯過了什麼?
更新:修復了使用someParam2的間接函數示例。
EH合併
someFuncIndirect()
取代someFuncIndirect
,無法發表評論我之前的評論了。這是一個更好的版本: 我修復了someFuncIndirect未使用'someParam2'並改變函數引用名稱的問題。 如果我這樣做:'funcRef1('test'); funcRef2('test')'結果應該是一樣的嗎? 'funcRef1'是一個函數,當''test''調用時'doSomething'。 'funcRef2'應該是一樣的;當用''test''調用時,它將執行'someFuncIndirect',它將執行'null'和'test'的'someFunc',它們與'funcRef1'傳遞的參數相同 –