@@ -16,7 +16,7 @@ title: React 规则
16
16
17
17
本节描述了你需要遵循的规则,以编写符合 React 习惯的代码。编写符合 React 习惯的代码可以帮助你编写组织良好、安全、可组合的应用程序。这些属性使你的应用程序更加适应变化,并且使得与其他开发人员、库和工具合作更加容易。
18
18
19
- 这些规则被称为 ** React 规则** . 它们是规则 – 而不仅仅是指导原则 – 的意义在于,如果这些规则被违反,你的应用程序可能会有 bug。你的代码也会变得不符合 React 习惯,更难以理解和推理。
19
+ 这些规则被称为 ** React 规则** . 它们是规则—— 而不仅仅是指导原则—— 的意义在于,如果这些规则被违反,你的应用程序可能会有 bug。你的代码也会变得不符合 React 习惯,更难以理解和推理。
20
20
21
21
我们强烈推荐使用 [ Strict Mode] ( /reference/react/StrictMode ) 以及 React 的 [ ESLint 插件] ( https://www.npmjs.com/package/eslint-plugin-react-hooks ) 来帮助你的代码库遵循 React 规则。通过遵循 React 规则,你将能够发现并解决这些 bug,并保持你的应用程序易于维护。
22
22
@@ -26,27 +26,27 @@ title: React 规则
26
26
27
27
[ 组件和钩子中的纯净性] ( /reference/rules/components-and-hooks-must-be-pure ) 是 React 的一个关键规则,它使你的应用程序变得可预测、易于调试,并允许 React 自动优化你的代码。
28
28
29
- * [ 组件必须是幂等的] ( /reference/rules/components-and-hooks-must-be-pure#components-and-hooks-must-be-idempotent ) – React 组件被假定为总是针对它们一样的输入 – props, state, 和 context 返回相同的输出。
30
- * [ 副作用必须在渲染之外运行] ( /reference/rules/components-and-hooks-must-be-pure#side-effects-must-run-outside-of-render ) – 副作用不应该在渲染中运行,因为 React 可能会多次渲染组件以创建最佳的用户体验。
31
- * [ 属性和状态是不可变的] ( /reference/rules/components-and-hooks-must-be-pure#props-and-state-are-immutable ) – 一个组件的属性和状态是针对单次渲染的不可变快照。永远不要直接修改它们。
32
- * [ 钩子的返回值和参数是不可变的] ( /reference/rules/components-and-hooks-must-be-pure#return-values-and-arguments-to-hooks-are-immutable ) – 一旦值被传递给钩子,你不应该修改它们。就像在 JSX 中的属性一样,值在被传递给钩子时变得不可变。
33
- * [ 值在被传递给 JSX 后是不可变的] ( /reference/rules/components-and-hooks-must-be-pure#values-are-immutable-after-being-passed-to-jsx ) – 不要在值已经被用于 JSX 后修改它们。在创建 JSX 之前进行修改。
29
+ * [ 组件必须是幂等的] ( /reference/rules/components-and-hooks-must-be-pure#components-and-hooks-must-be-idempotent ) —— React 组件被假定为总是针对它们一样的输入—— props, state, 和 context 返回相同的输出。
30
+ * [ 副作用必须在渲染之外运行] ( /reference/rules/components-and-hooks-must-be-pure#side-effects-must-run-outside-of-render ) —— 副作用不应该在渲染中运行,因为 React 可能会多次渲染组件以创建最佳的用户体验。
31
+ * [ 属性和状态是不可变的] ( /reference/rules/components-and-hooks-must-be-pure#props-and-state-are-immutable ) —— 一个组件的属性和状态是针对单次渲染的不可变快照。永远不要直接修改它们。
32
+ * [ 钩子的返回值和参数是不可变的] ( /reference/rules/components-and-hooks-must-be-pure#return-values-and-arguments-to-hooks-are-immutable ) —— 一旦值被传递给钩子,你不应该修改它们。就像在 JSX 中的属性一样,值在被传递给钩子时变得不可变。
33
+ * [ 值在被传递给 JSX 后是不可变的] ( /reference/rules/components-and-hooks-must-be-pure#values-are-immutable-after-being-passed-to-jsx ) —— 不要在值已经被用于 JSX 后修改它们。在创建 JSX 之前进行修改。
34
34
35
35
---
36
36
37
37
## React 调用组件和钩子 {/* react-calls-components-and-hooks* /}
38
38
39
39
[ React 负责在必要时渲染组件和钩子以优化用户体验。] ( /reference/rules/react-calls-components-and-hooks ) 它是声明式的:你在组件逻辑中告诉 React 需要渲染什么,React 会找出最佳方式将其展示给用户。
40
40
41
- * [ 永远不要直接调用组件函数] ( /reference/rules/react-calls-components-and-hooks#never-call-component-functions-directly ) – 组件应该只在 JSX 中使用。不要将它们作为常规函数调用。
42
- * [ 永远不要将钩子作为常规值传递] ( /reference/rules/react-calls-components-and-hooks#never-pass-around-hooks-as-regular-values ) – 钩子应该只在组件内部调用。不要将其作为常规值传递。
41
+ * [ 永远不要直接调用组件函数] ( /reference/rules/react-calls-components-and-hooks#never-call-component-functions-directly ) —— 组件应该只在 JSX 中使用。不要将它们作为常规函数调用。
42
+ * [ 永远不要将钩子作为常规值传递] ( /reference/rules/react-calls-components-and-hooks#never-pass-around-hooks-as-regular-values ) —— 钩子应该只在组件内部调用。不要将其作为常规值传递。
43
43
44
44
---
45
45
46
46
## Hooks 的规则 {/* rules-of-hooks* /}
47
47
48
48
钩子使用 JavaScript 函数定义,但它们代表一种特殊的可重用 UI 逻辑,并且它们在调用位置上有限制。当你使用钩子时,需要遵循 [ Hooks 的规则] ( /reference/rules/rules-of-hooks ) 。
49
49
50
- * [ 只在顶层调用钩子] ( /reference/rules/rules-of-hooks#only-call-hooks-at-the-top-level ) – 不要在循环、条件或嵌套函数中调用钩子。相反,总是在你的 React 函数的顶层使用钩子,并且在任何早期返回之前使用。
51
- * [ 只在 React 函数中调用钩子] ( /reference/rules/rules-of-hooks#only-call-hooks-from-react-functions ) – 不要从常规 JavaScript 函数中调用钩子。
50
+ * [ 只在顶层调用钩子] ( /reference/rules/rules-of-hooks#only-call-hooks-at-the-top-level ) —— 不要在循环、条件或嵌套函数中调用钩子。相反,总是在你的 React 函数的顶层使用钩子,并且在任何早期返回之前使用。
51
+ * [ 只在 React 函数中调用钩子] ( /reference/rules/rules-of-hooks#only-call-hooks-from-react-functions ) —— 不要从常规 JavaScript 函数中调用钩子。
52
52
0 commit comments