vuex - Vuex 无法停止 setInteval
问题描述
我在 Vuex 中有一个方法:
export const startTime = ({ commit, state }, status) => {
let timeInterval
if(status) {
const timer = 1000
timeInterval = setInterval(() => {
console.log('x')
commit('SET_RUNNED_TIME', parseInt(state.runnedTime += timer))
}, timer)
}
else {
console.log('y')
clearInterval(timeInterval)
commit('SET_RUNNED_TIME', 0)
}
}
从我的组件中,我发送 valuetrue
或false
to method startTime()
。当我发送true
then 方法时运行 commit SET_RUNNED_TIME
。但是当我发送false
clearInterval(timeInterval)
不停止setInterval
并且仍在发送时commit('SET_RUNNED_TIME' ...)
解决方案
变量timeInterval
在函数的范围内。如果你想让它在不同的调用之间继续存在,startTime
你需要把它放在函数范围之外。例如在该州。
推荐阅读
- python - 请求 csrf-token 不起作用 - Instagram lgin
- spring - Spring Boot 拦截器 - 对另一个服务执行阻塞网络调用
- html - 变换(旋转/翻译)更改我的文本的 z-index
- haskell - 为什么不是扩展 Functor 逆变的 Phantom 类?
- codeception - 尝试运行 ChromeDriver 以进行代码接收时出现错误消息
- javascript - 如何在models.PROTECT django中返回警报消息而不是HttpResponse
- javascript - 无法选择文本,无法在 Firefox 中定位插入符号 - Slatejs
- flutter - 在 Flutter 中当 bool 值为 true 和 false 时显示不同的小部件
- javascript - 为什么我的 Javascript toggleClass 代码不起作用?
- momentjs - 时刻js得到时间前