Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

203
Visualizações
Cómo diseñar el estado basado en useReducer

Tengo el siguiente requisito:

Contamos con una flota de 10 camiones . Cada camión puede llevar diferentes cargas, para nuestro caso de uso la carga son medicamentos . Un camión tiene:

  • número de serie (100 caracteres como máximo);
  • modelo (ligero, mediano, crucero, pesado);
  • límite de peso (500gr máx.);
  • capacidad de la batería (porcentaje);
  • estado (INACTO, CARGANDO, CARGADO, ENTREGA, ENTREGA, DEVOLUCIÓN).

Cada medicamento tiene:

  • nombre (solo se permiten letras, números, '-', '_');
  • peso;
  • código (solo se permiten letras mayúsculas, guiones bajos y números);
  • imagen (imagen del estuche de medicamentos).

Y según mi evaluación, es mejor usar un useReducer para lograr el objetivo. Pero mi desafío es cómo construir mi estado.

  1. ¿Debo anidar la parte del medicamento o debe estar sola?
 const [truck, setTrucks] = useState([ { sn: "001001", model: "LightWeight", weightLimit: "50", batteryCapacity: 80, state: "IDLE", }, { sn: "001002", model: "Middleweight", weightLimit: "150", batteryCapacity: 30, state: "IDLE", }, //rest data here ]);
  1. ¿Cómo lo presentaré en mi reductor si está anidado?
 export const droneReducer = (state, action) => { switch (action.type) { case "REGISTER_TRUCK": return [ ...state, { sn: action.truck.sn, model: action.truck.model, weightLimit: action.truck.weightLimit, batteryCapacity: action.truck.batteryCapacity, state: action.truck.state, }, ]; case "LOAD_TRUCK": case "CHECK_LOADED": case "CHECK_AVAILABLE": case "CHECK_BATTERY_LEVEL": } };

Gracias

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Además de mis comentarios, si quisiera que estuviera anidado, agregaría una propiedad de load al objeto Truck :

 export const droneReducer = (state, action) => { switch (action.type) { case "REGISTER_TRUCK": return [ ...state, { sn: action.truck.sn, model: action.truck.model, weightLimit: action.truck.weightLimit, batteryCapacity: action.truck.batteryCapacity, state: action.truck.state, load: action.truck.load // an array of medicines with qty }, ]; case "LOAD_TRUCK": case "CHECK_LOADED": case "CHECK_AVAILABLE": case "CHECK_BATTERY_LEVEL": } };

Por lo tanto, podría verse como load: [{name: 'COVID vaccine', weight: 2, qty: 9000, code: 'CVD19'}]

Y luego accedería como accedería a cualquier otra propiedad de un camión: truck.load . Puede ver su contenido, filtrarlo y restablecer el estado con un nuevo valor, agregarle cosas, quitarle cosas, cambiar la cantidad de algo dentro de él. Cualquier cosa.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda