我的值x = 5;
我需要在5分钟内将x值替换为10,并在5分钟后恢复其旧值(5)。我如何使用React-Redux实现这一目标。
我的代码:
单击按钮,我正在触发名为sendValue的函数
const x = 5;
onSubmit={e => {
e.preventDefault();
timeInterval = setInterval(() => {
sendValue(x);
}, timeDelay);
}}
act.sendValue.js是一个如下所示的操作文件:
export const sendValue = (x) => async dispatch => {
// other code
dispatch({
type: SEND_VALUE,
payload: {
initialValue: x
}
});
};
单击另一个按钮时,我正在调用一个名为updateValue的函数
act.updateValue是如下所示的动作:
const x = 5;
export const updatePackagesLoad = (x) => async dispatch => {
let newValue;
setTimeout(function () {
newValue = x + 5; // updating x value to 10 for 5 minutes
alert();
}, 300000);
dispatch({
type: UPDATE_VALUE,
payload: {
updatedValue: newValue
}
});
};
我的减速器文件rdc.values.js如下所示:
const initialState = { countValue : 5 }
export default (state = initialState, action) => {
const { type, payload } = action;
switch(type) {
case SEND_VALUE:
return {
...state,
countValue: payload.initialValue
};
case UPDATED_VALUE:
return {
...state,
countValue: payload.updatedValue
};
default:
return state;
}
}
我的setTimeout函数正确吗?将x值从5更改为10 6分钟是否会达到预期的结果?如果没有,我该如何实现?
感谢您的帮助。
谢谢
我认为您应该阅读Redux-Saga的文档。您可以根据需要启动一个传奇,每5分钟执行一次该传奇。而且,将任何操作发送到redux也非常容易。
示例:
export function* updateEvery5Minutes() {
while (true) {
yield delay(1000 * 300) // 5 minutes
yield put({type:'ACTION_TYPE', payload: 5}) // any redux action
}
}
然后按照您在文档中看到的方式运行传奇。
以10开始,然后等待5分钟,然后将其更改为5,然后它将停止
setval=true
var interv=setInterval(function () {
if(setval){
console.log('10'),
setval=false
return x=10
}
if(!setval){
console.log('5')
return x=5, clearInterval(interv)
}
}, 300000);