Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

186
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!