常规 javascript 函数和 React 函数之间的区别

Man*_*dia 6 reactjs react-hooks

根据 React,我们可以从 React 函数调用钩子,而不是从常规 Javascript 函数调用。

但他们两者有什么区别呢?

从这篇文章来看,似乎没有什么区别,只是写作方式不同。

请提供一个例子以更清楚地说明差异。

Dre*_*ese 13

React 函数Javascript 函数,有一些特殊的规则。

\n

反应函数:

\n
    \n
  1. 遵循 React 组件命名约定,即它们必须大写
  2. \n
  3. 采用单个props对象参数
  4. \n
  5. 返回有效的 JSX
  6. \n
  7. React 函数永远不会被调用。传递对它们的引用或将它们引用为 JSX
  8. \n
\n

就是这样。

\n
const MyComponent = (props) => <div>{props.greeting}</div>;\n
Run Code Online (Sandbox Code Playgroud)\n

用法:

\n
<MyComponent greeting="Hello World!" />\n
Run Code Online (Sandbox Code Playgroud)\n

永不MyComponent({ greeting: "Hello World!" });

\n

这是因为 React 框架获取此组件引用并将其转换为常规的旧 Javascript 函数,并管理为您调用此函数。React 管理组件生命周期。

\n

与其他答案相反,普通的 Javascript 函数可以返回 JSX。请参阅渲染元素。您可以将 JSX 文字分配给变量,或调用返回 JSX 文字的 Javascript 函数。

\n

例子:

\n
const getGreeting = (name) => <div>Hello, {name}!</div>;\n\nconst MyComponent = (props) => <div>{getGreeting(props.name)}</div>;\n
Run Code Online (Sandbox Code Playgroud)\n

用法:

\n
<MyComponent name="Drew" /> // --> <div>Hello, Drew!</div>\n
Run Code Online (Sandbox Code Playgroud)\n

类似地,React hooks 也只是Javascript 函数,但同样应用了特殊的规则。您可以阅读这些Hook 规则

\n
    \n
  1. use-React hooks 遵循使用前缀的命名约定
  2. \n
  3. 仅在顶层调用 Hooks 。不要\xe2\x80\x99t 在循环、条件或嵌套函数内调用 Hook。
  4. \n
  5. 仅从React 函数组件中调用 Hooks 。不要\xe2\x80\x99t 从常规 JavaScript 函数调用 Hook。
  6. \n
  7. 可以在自定义 React hook 中调用
  8. \n
\n

这些只是 React 团队决定的规则,目的是使 React hooks 的使用变得易于管理,并在 React 组件生命周期内工作并保持理智。

\n