javascript - 与内联 javascript 函数意外不同的行为

标签 javascript reactjs redux-form

我在内联 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

第一个输入框使用内联版本,在输入第一个字符后,输入框会失去焦点。第二个输入框使用间接方法,不会遇到这个问题。我还注意到,如果我先在第二个输入框中键入文本,第一个输入框上的焦点问题就会消失。

所有 redux-form 似乎与函数引用有关的是用它调用 React.createElement。父调用者在两者之间是不同的,但我想不出这将如何导致这种行为。我错过了什么?

更新:修复了使用 someParam2 的间接函数示例。

最佳答案

在您上面粘贴的代码中,parameter1 将是一个采用param2 并将doSomething 的函数。另一方面,parameter2 将是一个函数,调用时,将返回 someFunc 的返回值,这将与 parameter1 相同。因此,如果您希望两个 parameters 的行为相同,请将 const parameter2 = someFuncIndirect 行中的 someFuncIndirect 替换为 someFuncIndirect() >

关于javascript - 与内联 javascript 函数意外不同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765953/

相关文章:

javascript - 如何避免或禁用 Redux 表单文本输入中的自动完成功能?

reactjs - 如何将自定义 radio 组设置为 redux 形式

javascript - 全背景图片幻灯片jquery,想让幻灯片的最后一张图片可点击

javascript - 如何使函数的别名与 JavaScript 中的 new 一起使用

Javascript 更改为元素的指针事件 CSS 属性

javascript - 为多个应用创建 React App?

javascript - Typescript和jsx,为什么对象生命周期中静态声明的状态为null?

javascript - Material ui 的自定义输入中的 Redux 表单不起作用

javascript - 我如何从 jQuery 中的模态对话框中获取结果

html - Materialize css --select-- 在 react 中不起作用