React 默认调用不带括号的函数 useState

时间:2021-02-17 08:42:37

标签: javascript reactjs function react-hooks use-state

我有一个名为 getAllEmployees 的函数,我从另一个文件中导出该函数。

const getAllEmployees = () => {
    return [1,2,3,4,5,6,7,8,9]
}

export { getAllEmployees }

现在我使用 React.useState(getAllEmployees)。这给了我结果,当我像 React.useState(getAllEmployees()) 这样调用时它也会给我同样的结果,当调用像 React.useState(() => getAllEmployees() 时的事件) 这也给了我同样的结果。

从这里导入

import { getAllEmployees } from './Service/Service'

与 useState 一起使用

const [result] = useState(getAllEmployees ) or
const [result] = useState(getAllEmployees()) or
const [result] = useState(() => getAllEmployees())

console.log(result)

所有这些结果都是

 (9) [1, 2, 3, 4, 5, 6, 7, 8, 9]

我的问题是为什么他们给我相同的结果,哪个是正确的方法?

1 个答案:

答案 0 :(得分:5)

<块引用>

为什么他们给我相同的结果?

  1. const [result] = useState(getAllEmployees)

    React useState 钩子可以采用惰性初始化函数,在组件挂载和状态初始化时调用。您正在为 React 传递一个回调,以使用返回值调用和初始化状态。

  2. const [result] = useState(getAllEmployees())

    这只是立即调用函数并将返回值传递给钩子作为初始状态。

  3. const [result] = useState(() => getAllEmployees())

    这与 1 相同,但您传递了一个匿名初始化函数。

<块引用>

哪种方式是正确的?

正确的方法是适合您的用例的方法,易于阅读、理解和维护。 1 或 2 都可以,如果 getAllEmployees 是一个函数,则为 1,如果不是,则为 2。 3 是不必要的。