Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

184
Vistas
¿Cómo contar cuántas veces un valor es verdadero en una hora/día en React?

Estoy codificando una aplicación de alarma y quiero contar cuántas veces se ha disparado la alarma en una hora y en un día. Uso el kit de herramientas redux para manejar el estado de la alarma (verdadero/falso) y el reductor countAlarm para incrementar el conteo. En este momento handleCount envía countAlarm cada vez que alarmValue es verdadero. Me gustaría contar cuántas veces alarmValue es verdadero en una hora y en un día. ¿Cómo puedo hacer eso?

 const dispatch = useDispatch(); const countValue = useSelector((state) => state.count.value); const alarmValue = useSelector((state) => state.alarm.active); const handleCount = () => { if (alarmValue) { dispatch(countAlarm()); }} useEffect(() => { handleCount() }, [alarmValue]) return ( <View> <Text>{countValue}</Text> </View> ...

countAlarm :

 import { createSlice } from '@reduxjs/toolkit'; const initialStateValue = { value: 0 } const countSlice = createSlice({ name: 'count', initialState: initialStateValue, reducers: { countAlarm: (state = initialStateValue) => { state.value++; }, } }); export const {countAlarm} = countSlice.actions; export default countSlice.reducer;

alarmValue :

 import { createSlice } from '@reduxjs/toolkit'; const initialStateValue = { active: false, } const alarmSlice = createSlice({ name: 'alarm', initialState: initialStateValue, reducers: { alarmOn: (state = initialStateValue) => { state.active = true; }, alarmOff: (state = initialStateValue) => { state.active = false; }, } }); export const {alarmOn, alarmOff} = alarmSlice.actions; export default alarmSlice.reducer;
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿Qué quieres decir con en una hora / en un día? Agrego los datos:

 const initialStateValue = { value: 0, numberOfAlarmsInDay: 0 numberOfAlarmsPerHour: { perFirstHour: 0, perSecondHour: 0, ... } }

Entonces, necesitas

  • ya sea el tiempo como PayloadAction o lee algo como los datos del sistema en el reductor para determinar qué contador configurar
  • un disparador para un nuevo día para restablecer los valores, muy probablemente como otra acción. Si desea hacer eso en un reductor (con la primera alarma de un nuevo día), debe mantener el día para saber cuándo reiniciar nuevamente -> ¡pero los datos pueden estar sucios!

¡Espero que esto te ayude un poco a avanzar más!

about 4 years ago · Juan Pablo Isaza Denunciar

0

Realmente no deberías ir a esta "rotonda a través del componente". En su lugar, deja que countSlice simplemente reaccione a la acción alamSlice de alarmOn :

 import { createSlice } from '@reduxjs/toolkit'; import { alarmOn } from './alarmSlice' const initialStateValue = { value: 0 } const countSlice = createSlice({ name: 'count', initialState: initialStateValue, reducers: { // reducers for "this slice" }, extraReducers: builder => { // reducers for actions owned by other slices builder.addCase(alarmOn, (state) => { state.value++; }) } });

Consulte Permitir que muchos reductores respondan a la misma acción en la guía Redux Style.

(Por supuesto, también puede mantener el counter en su alarmSlice ; dependiendo de la complejidad, también podría ser una buena solución)

PD: no lo hagas (state = initialStateValue) => { - no necesitas inicializar tu estado así, createSlice se encarga de eso.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda