reactjs – React.js / Redux:Reducers中的setInterval和clearI
发布时间:2020-12-15 05:05:10 所属栏目:百科 来源:网络整理
导读:目前我正在 FCC Game of Life工作,我能够弄清楚如何生成下一个应用程序状态(递增). 话虽这么说,我的下一步是弄清楚如何连续生成新的应用程序状态(生成).在这种情况下,我试图在我的reducer中实现setInterval和clearInterval. 我希望能够启动/暂停生成新一代(
目前我正在
FCC Game of Life工作,我能够弄清楚如何生成下一个应用程序状态(递增).
话虽这么说,我的下一步是弄清楚如何连续生成新的应用程序状态(生成).在这种情况下,我试图在我的reducer中实现setInterval和clearInterval. 我希望能够启动/暂停生成新一代(通过在state.start中切换状态) 我实现它的麻烦是范围问题. 这是我的减速机的一部分: 减速器/ reducers_grid.js export default function(state = initialState,action){ switch (action.type) { .... case START: let toggleStart = state.start === true ? false : true; if (state.start === true){ console.log('START THE GAME') const newGeneration = nextGeneration(action.payload,state) return Object.assign({},state,{cells: newGeneration,start: toggleStart }) } else { console.log('PAUSE THE GAME') return Object.assign({},{start: toggleStart }) } return state; } 从本质上讲,nextGeneration函数会生成新的应用程序状态(生成)并通过Object.assign将其更新 首先,我想将setInteveral放在第一个if语句中,将clearInterval放在第二个if语句中,但显然会产生范围问题. 这部分逻辑似乎非常微不足道,但我一直坚持这一点.
不要在减速机中这样做.减速器应该是纯函数(意味着没有副作用).相反,您可以创建仅在游戏运行时呈现的组件(由START操作设置为true且由STOP操作设置为false的布尔状态).然后在组件的componentDidMount函数中调用setInterval,该函数调用NEXT_GENERATION操作.之后,发送另一个动作,将计时器ID添加到商店.然后,在componentWillUnmount中根据计时器id删除间隔.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |