![](/img/trans.png)
[英]Count how many times a conditional is true inside for loop with javascript
[英]How to count how many times a value is true in an hour/day in React?
我正在編寫一個鬧鍾應用程序,想計算一個小時和一天內觸發鬧鍾的次數。 我使用 redux 工具包來處理警報的 state(真/假)和減速器countAlarm
來增加計數。 現在handleCount
會在每次alarmValue
為真時調度countAlarm
。 我想計算alarmValue
在一個小時內和一天內有多少次為真。 我怎么做?
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;
一小時/一天是什么意思? 我會 append 數據:
const initialStateValue = {
value: 0,
numberOfAlarmsInDay: 0
numberOfAlarmsPerHour: {
perFirstHour: 0,
perSecondHour: 0,
...
}
}
那么,你需要
希望這能幫助你進一步進步!
你不應該真的 go 這個“迂回通過組件”。 相反,讓您的countSlice
僅對alamSlice
的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++; })
}
});
請參閱 Redux 樣式指南中的允許多個減速器響應相同的操作。
(當然,您也可以將counter
保留在alarmSlice
中;取決於復雜性,這也可能是一個很好的解決方案)
PS:不要做(state = initialStateValue) => {
- 你不需要像這樣初始化你的 state , createSlice
會處理這個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.