Skip to content

Commit a018dc8

Browse files
committed
rules: react calls components and hooks finished
1 parent c9ad511 commit a018dc8

File tree

3 files changed

+21
-22
lines changed

3 files changed

+21
-22
lines changed

src/content/reference/rules/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Esta sección describe las reglas que necesitas seguir para escribir código Rea
1818

1919
Estas reglas son conocidas como las **Reglas de React**. Son reglas – y no solo directrices – en el sentido de que si se rompen, es probable que tu aplicación tenga errores. Tu código también se vuelve poco idiomático y más difícil de entender y de razonar.
2020

21-
Recomendamos encarecidamente usar [Strict Mode](/reference/react/StrictMode) junto con el [ESLint plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) para ayudar a que tu base de código siga las Reglas de React. Al seguir las Reglas de React, podrás encontrar y abordar estos errores y mantener tu aplicación.
21+
Recomendamos encarecidamente usar [Strict Mode](/reference/react/StrictMode) junto con el [ESLint plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) para ayudar a que tu base de código siga las Reglas de React. Seguir las Reglas de React te permitirá encontrar y abordar estos errores y mantener tu aplicación.
2222

2323
---
2424

src/content/reference/rules/react-calls-components-and-hooks.md

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ React se encarga de renderizar los componentes y hooks cuando sea necesario para
1010

1111
---
1212

13-
## Never call component functions directly {/*never-call-component-functions-directly*/}
13+
## Nunca llames a funciones de componentes directamente {/*never-call-component-functions-directly*/}
1414
Los componentes solo deben ser utilizados en JSX. No los llames como funciones regulares. React debería ser quien los llame.
1515

1616
React debe decidir cuándo se llama a la función del componente [durante el renderizado](/reference/rules/components-and-hooks-must-be-pure#how-does-react-run-your-code). En React, lo haces usando JSX.
@@ -39,63 +39,62 @@ Permitir que React orqueste el renderizado también ofrece una serie de benefici
3939

4040
---
4141

42-
## Never pass around Hooks as regular values {/*never-pass-around-hooks-as-regular-values*/}
42+
## Nunca pases Hooks como valores regulares {/*never-pass-around-hooks-as-regular-values*/}
4343

44-
Hooks should only be called inside of components or Hooks. Never pass it around as a regular value.
44+
Los Hooks solo deben ser llamados dentro de componentes. Nunca los pases como un valor regular.
4545

46-
Hooks allow you to augment a component with React features. They should always be called as a function, and never passed around as a regular value. This enables _local reasoning_, or the ability for developers to understand everything a component can do by looking at that component in isolation.
46+
Los hooks te permiten aumentar un componente con las características de React. Siempre deben ser llamados como una función, y nunca pasados como un valor regular. Esto permite el _razonamiento local_, o la capacidad de los desarrolladores para entender todo lo que un componente puede hacer con solo mirar ese componente de forma aislada.
4747

48-
Breaking this rule will cause React to not automatically optimize your component.
48+
Romper esta regla hará que React no optimice automáticamente tu componente.
4949

50-
### Don't dynamically mutate a Hook {/*dont-dynamically-mutate-a-hook*/}
50+
### No mutes dinámicamente a un Hook {/*dont-dynamically-mutate-a-hook*/}
5151

52-
Hooks should be as "static" as possible. This means you shouldn't dynamically mutate them. For example, this means you shouldn't write higher order Hooks:
52+
Los hooks deben ser como "estáticos" como sea posible. Esto significa que no debes mutarlos dinámicamente. Por ejemplo, esto significa que no debes escribir hooks de orden superior:
5353

5454
```js {2}
5555
function ChatInput() {
56-
const useDataWithLogging = withLogging(useData); // 🔴 Bad: don't write higher order Hooks
56+
const useDataWithLogging = withLogging(useData); // 🔴 Mal: no escribas hooks de orden superior
5757
const data = useDataWithLogging();
5858
}
5959
```
6060

61-
Hooks should be immutable and not be mutated. Instead of mutating a Hook dynamically, create a static version of the Hook with the desired functionality.
61+
Los hooks deben ser inmutables y no ser mutados. En su lugar, muta un hook dinámicamente, crea una versión estática del hook con la funcionalidad deseada.
6262

6363
```js {2,6}
6464
function ChatInput() {
65-
const data = useDataWithLogging(); //Good: Create a new version of the Hook
65+
const data = useDataWithLogging(); //Bien: Crea una nueva versión del hook
6666
}
6767

6868
function useDataWithLogging() {
69-
// ... Create a new version of the Hook and inline the logic here
69+
// ... Crea una nueva versión del hook e implementa la lógica aquí
7070
}
7171
```
7272

73-
### Don't dynamically use Hooks {/*dont-dynamically-use-hooks*/}
73+
### No uses dinámicamente a un Hook {/*dont-dynamically-use-hooks*/}
7474

75-
Hooks should also not be dynamically used: for example, instead of doing dependency injection in a component by passing a Hook as a value:
75+
Los hooks tampoco deben ser utilizados dinámicamente: por ejemplo, en lugar de hacer inyección de dependencias en un componente pasando un Hook como un valor:
7676

7777
```js {2}
7878
function ChatInput() {
79-
return <Button useData={useDataWithLogging} /> // 🔴 Bad: don't pass Hooks as props
79+
return <Button useData={useDataWithLogging} /> // 🔴 Mal: no pases hooks como props
8080
}
8181
```
8282

83-
You should always inline the call of the Hook into that component and handle any logic in there.
83+
Deberías siempre integrar la llamada del hook en el componente y manejar cualquier lógica en él.
8484

8585
```js {6}
8686
function ChatInput() {
8787
return <Button />
8888
}
8989

9090
function Button() {
91-
const data = useDataWithLogging(); //Good: Use the Hook directly
91+
const data = useDataWithLogging(); //Bien: Llama al hook directamente
9292
}
9393

9494
function useDataWithLogging() {
95-
// If there's any conditional logic to change the Hook's behavior, it should be inlined into
96-
// the Hook
95+
// Si hay alguna lógica condicional para cambiar el comportamiento del hook, debe ser integrada // en el hook
9796
}
9897
```
9998

100-
This way, `<Button />` is much easier to understand and debug. When Hooks are used in dynamic ways, it increases the complexity of your app greatly and inhibits local reasoning, making your team less productive in the long term. It also makes it easier to accidentally break the [Rules of Hooks](/reference/rules/rules-of-hooks) that Hooks should not be called conditionally. If you find yourself needing to mock components for tests, it's better to mock the server instead to respond with canned data. If possible, it's also usually more effective to test your app with end-to-end tests.
99+
De esta manera, el componente, `<Button />` es mucho más fácil de entender y depurar. Cuando los Hooks se utilizan de forma dinámica, aumentan considerablemente la complejidad de tu aplicación e impiden el razonamiento local, lo que hace que tu equipo sea menos productivo a largo plazo. También hace que sea más fácil romper accidentalmente las [Reglas de los Hooks](/reference/rules/rules-of-hooks) que establecen que los Hooks no deben ser llamados condicionalmente. Si encuentrasen la necesidad de mockear componentes para realizar pruebas, es preferible mockear el servidor en su lugar para que responda con datos predefinidos. Si es posible, también suele ser más eficaz probar tu aplicación con pruebas de extremo a extremo (end-to-end).
101100

src/content/reference/rules/rules-of-hooks.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,15 @@ class Bad extends React.Component {
9797
9898
function Bad() {
9999
try {
100-
// 🔴 Bad: Hook llamado dentro de un bloque try/catch/finally (solución, muévelo afuera del bloque!)
100+
// 🔴 Mal: Hook llamado dentro de un bloque try/catch/finally (solución, muévelo afuera del bloque!)
101101
const [x, setX] = useState(0);
102102
} catch {
103103
const [x, setX] = useState(1);
104104
}
105105
}
106106
```
107107

108-
Puedes usar el [`eslint-plugin-react-hooks` plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks), para capturar estos errores.
108+
Puedes usar el [plugin `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks), para capturar estos errores.
109109

110110
<Note>
111111

0 commit comments

Comments
 (0)