Vuex 无法停止 setInterval

Vuex can't stop 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)
    }
}

我从我的组件发送值 truefalse 到方法 startTime()。当我发送 true 然后方法 运行 提交 SET_RUNNED_TIME。但是当我发送 false clearInterval(timeInterval) 时没有停止 setInterval 并且仍在发送 commit('SET_RUNNED_TIME' ...)

变量timeInterval在函数范围内。如果你想让它在对 startTime 的不同调用之间继续存在,你需要把它放在函数范围之外。比如在州。