Redux: revisi贸n de la l贸gica y acciones del reductor


Uno de estos d铆as estaba jugando con muchos archivos redux'a, donde, l贸gicamente, los archivos se mueven a reductores, acciones, constantes de tipo de acciones. Todo esto result贸 ser una tarea bastante dif铆cil, mantener todos estos tipos de archivos en la cabeza y rastrear la l贸gica. Y ... eureka, surgi贸 la idea de simplificar la escritura de la l贸gica redux. Quiz谩s creando tu bicicleta, pero 驴qui茅n no intent贸 escribir sus bicicletas? Pero lo principal no es escribir, sino escribir soporte cuando . D茅jame intentar mostrarte un poco mi visi贸n de mi l贸gica redux.


Inicio


Y entonces tenemos reducir:


//   import { TODO } from './actions/const'; ..... //      .... //    reducer function todoApp(state = initialState, action) { switch (action.type) { case TODO.SET_VISIBILITY_FILTER: return Object.assign({}, state, { visibilityFilter: action.filter }) case TODO.ADD_TODO: return Object.assign({}, state, { todos: [ ...state.todos, { text: action.text, completed: false } ] }) case TODO.TOGGLE_TODO: return Object.assign({}, state, { todos: state.todos.map((todo, index) => { if (index === action.index) { return Object.assign({}, todo, { completed: !todo.completed }) } return todo }) }) ...          ...            ... default: return state } } 

tomado de muelles en redux .


la acci贸n se ve as铆:


 //   import { TODO } from './const'; export const addTodo = (value) => ({ type: TODO.ADD_TODO, payload: value }) 

constantes Creo que no hay necesidad de mostrar.


BOOL


Tratar茅 de describir el frenes铆 que experimento al leer el c贸digo, especialmente al depurar o expandir la funcionalidad.


  • b煤squeda: todo el tiempo que necesita presionar Ctrl + F y globalmente Ctrl + Shift + F
  • no visible inmediatamente desde donde crecen las piernas. Fluye del p谩rrafo anterior.
  • no, esto es solo un poco, as铆 que todav铆a tengo todo el proyecto atravesado por constantes. No, no estoy en contra de las constantes, pero 驴por qu茅? Adem谩s, si se usan junto con la anidaci贸n como en el ejemplo, y si se concatenan de varios, esto generalmente es un infierno de navegaci贸n.
  • La l贸gica es borrosa. En un lugar de acci贸n en otro, el procesamiento de estas acciones en la tercera constante (opcional) solo es necesario para esos dos.
  • Necesito mantener abiertos muchos archivos al desarrollar o depurar. Fluye del p谩rrafo anterior.
    Bueno, etc.

Entrada l贸gica


Tal vez parezca extra帽o e impactante al principio, pero a煤n as铆 me parece que este es el lugar para estar. Tratar茅 de transmitir mi plantilla.


reductor


espiado en google


Engranaje: un mecanismo que cambia el par y la potencia. Este es uno o m谩s engranajes que interact煤an entre s铆 y reducen el n煤mero de revoluciones del motor a una velocidad de rotaci贸n aceptable del nodo de ejecuci贸n.

Es decir, el eje tiene un engranaje, este engranaje transmite la rotaci贸n a otro engranaje, que a su vez gira a su eje. Quitamos el eje y el engranaje se retira con 茅l. No es un m贸dulo discontinuo, por as铆 decirlo.


Si llevas a cabo la alegor铆a m谩s adelante, el eje es la acci贸n y el engranaje es la l贸gica. De aqu铆 se deduce que la caja de engranajes act煤a como un enlace para garantizar la transmisi贸n del par, es decir, los datos en la aplicaci贸n. Debe apoyar el entorno de trabajo ideal de los mecanismos.


acci贸n


Como se mencion贸 anteriormente, esta es la acci贸n en s铆 y la l贸gica de qu茅 energ铆a transmitir (en nuestro caso, datos).


Y entonces vamos. Mi bici


reductor:


 export function todoApp(state = initialState, action) { if (typeof action.func === 'function') { return action.func(state); } } 

S铆, este es todo mi reductor. En este momento tal vez habr谩 una peque帽a brecha en los patrones, 驴c贸mo? sacamos la l贸gica de reducer'a ..? Si 隆Te digo que sacamos la l贸gica de reducer'a!


Echemos un vistazo a la acci贸n:


 export function addTodo = (value) => ({ type: 'ADD_TODO' , payload: value, func: (state) =>({...state, value}) }) } 

Por el bien de esto, sacamos a relucir la l贸gica responsable de transferir datos a la tienda. Quedaba reductor para garantizar el funcionamiento de todo el mecanismo. Y debe hacerlo bien sin distraerse con cosas que no le conciernen. Y solo podemos observar el orden de donde crecen las piernas y, si es necesario, encontrar y arreglar o complementar r谩pidamente.


Vale la pena se帽alar. Eliminamos las constantes. S铆 y cambia tambi茅n. Lo que permiti贸 reducir la complejidad de la ejecuci贸n de O (1) en reducer'e.


Este es solo un boceto de ejemplo que puede expandir y eliminar combineReducers. Ampliar, complementar y cambiar sus necesidades es muy bueno, tomar una herramienta y hacerla ideal para sus tareas.


Y lo m谩s importante que quiero decir.



Se inteligente. beee

Source: https://habr.com/ru/post/440940/


All Articles