Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React默认情况下不使用不带括号的调用函数_Javascript_Reactjs_Function_React Hooks_Use State - Fatal编程技术网

Javascript React默认情况下不使用不带括号的调用函数

Javascript React默认情况下不使用不带括号的调用函数,javascript,reactjs,function,react-hooks,use-state,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)。当我调用likeReact.useState(getAllEmployees())时,它会给出相同的结果,当调用likeReact.useState(()=>g

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

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

export { getAllEmployees }
现在我使用React.useState(getAllEmployees)。当我调用likeReact.useState(getAllEmployees())时,它会给出相同的结果,当调用likeReact.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]
我的问题是,为什么他们给了我同样的结果,哪种方法是正确的

为什么他们给我同样的结果

  • const[result]=useState(getAllEmployees)

    React
    useState
    hook可以使用一个惰性初始化器函数,在组件装载和状态初始化时调用该函数。您正在为React to call传递回调,并使用返回值初始化状态

  • const[result]=useState(getAllEmployees())

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

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

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

  • 哪条路对


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

    const[result,setResult]=useState(getAllEmployees);在这里,我不想再次设置结果。为此,只需从函数中获取值,这就是我仅使用[result]的原因