Skip to content

Mejora de la gestión del estado: Evitar la mutación direct#5

Merged
JMLTUnderCode merged 5 commits intomainfrom
4-dispatch-functions
Sep 24, 2025
Merged

Mejora de la gestión del estado: Evitar la mutación direct#5
JMLTUnderCode merged 5 commits intomainfrom
4-dispatch-functions

Conversation

@JMLTUnderCode
Copy link
Owner

@JMLTUnderCode JMLTUnderCode commented Sep 24, 2025

Pull Request: Mejora de la gestión del estado: evite la mutación directa, utilice el patrón de envío.

Resumen

Este PR refactoriza la gestión de estado global en el frontend de Clontube, eliminando la mutación directa del estado React y asegurando que todas las actualizaciones de estado se realicen mediante dispatch. Este PR soluciona el issue #4


Cambios principales

  • Eliminación de mutaciones directas:
    Se reemplazó cualquier asignación directa sobre objetos de estado (por ejemplo, LOGIN_VIEW_STATE.loginFields.identifier = value) por llamadas a funciones de dispatch (como setLoginFields, setRegisterFields).

  • Uso consistente de dispatch:
    Todas las actualizaciones de estado global ahora pasan por funciones de dispatch, asegurando que React detecte los cambios y re-renderice correctamente los componentes afectados.

  • Memorización de funciones de actualización:
    Las funciones como setLoginFields y setRegisterFields están memorizadas usando useCallback en el provider, permitiendo su uso seguro en dependencias de hooks como useEffect.

  • Corrección de dependencias en hooks:
    Se ajustaron los arrays de dependencias en los useEffect para evitar warnings de ESLint y prevenir bugs de renderizado.

  • Mejoras en la estructura del contexto:
    El contexto y el provider ahora exponen solo funciones y estados necesarios, siguiendo el principio de encapsulamiento.


Beneficios

  • Evita bugs de renderizado y sincronización de estado.
  • Mejora la predictibilidad y trazabilidad de los cambios de estado.
  • Permite escalar el contexto y el estado global de manera segura.
  • Cumple con las mejores prácticas de React y la comunidad.

Archivos principales modificados

  • src/providers/LoginViewProvider.tsx
  • src/reducers/loginView.ts
  • Componentes que usaban mutación directa (FormLogin, FormRegister, etc.)

Notas

  • Todos los tests existentes siguen pasando y la cobertura se mantiene.

@JMLTUnderCode JMLTUnderCode self-assigned this Sep 24, 2025
@JMLTUnderCode JMLTUnderCode added the Improvement Improvement of code, functionality, and logic. label Sep 24, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR refactors global state management in the Clontube frontend by eliminating direct state mutations and ensuring all state updates are performed through dispatch functions. The changes enforce proper React state management patterns and improve the predictability of state changes.

  • Introduces new type definitions for Login and Register to improve type safety
  • Adds dedicated action types and handlers for setting login and register fields separately
  • Replaces direct state mutations with proper dispatch calls in form components

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/utils/types.ts Adds new type definitions and updates action types to support separate field management
src/reducers/loginView.ts Adds new action handlers for SET_LOGIN_FIELDS and SET_REGISTER_FIELDS
src/providers/LoginViewProvider.tsx Introduces memoized dispatch functions for field updates and removes parameter-based state changes
src/components/FormRegister.tsx Replaces direct state mutation with setRegisterFields dispatch call
src/components/FormLogin.tsx Replaces direct state mutation with setLoginFields dispatch call

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

JMLTUnderCode and others added 2 commits September 24, 2025 11:02
Eliminacion de espacios

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Eliminacion de espacios

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@JMLTUnderCode JMLTUnderCode merged commit 7e4cea1 into main Sep 24, 2025
2 checks passed
@JMLTUnderCode JMLTUnderCode linked an issue Sep 24, 2025 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Improvement Improvement of code, functionality, and logic.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Mutación directa del estado global

1 participant