首页 > 解决方案 > 可以在减速器状态上设置计时器吗?反应 + 还原

问题描述

可以设置一个计时器来清除一些减速器状态吗?我有一个状态来显示“成功”、“错误”、“警告”的消息

例子:

减速器:

const statusState = {
   status: {action: '', result: ''}
}

...

CASE fetchContent:
    return {
      ...state,
      contents: [...state.contents, action.data],
      status: {
        ...state.status,
        action: action.type,
        result: action.result
      }
    }

零件:

render(){
   cost { status } = this.props

   if(status.action == "something" && status.result == "success"){
      alert("success");
   }
}

const mapStateToProps = store => ({
       status: store.initialState.status
   });

   export default connect(mapStateToProps)(Component);

如果我不清除 status.action 和 status.result 警报会一直显示,是否可以设置一个计时器来清除它?

标签: javascriptreactjsredux

解决方案


创建一个清除 status.action 和 status.result 的清除操作。创建一个 javscript 超时函数,该函数在超时后调用清除操作。如下所示:

 clearStatus = ()=>{
       setTimeout(
        function() {
            //create a action that clears status and result
        },3000
       );
    }   

     render(){
           cost { status } = this.props

           if(status.action == "something" && status.result == "success"){
             //showMessage 
             clearStatus();
           }
        }

推荐阅读