代码之家  ›  专栏  ›  技术社区  ›  jsDev

将函数添加到队列中以便稍后执行。雷杜

  •  1
  • jsDev  · 技术社区  · 6 年前

    朋友。
    我一直在处理一个问题。 我有这行代码

    var methodToQueue = {
      afterOffline: ƒ afterOffline(data)
      dependsOnNetworkStatus: true
      offline: ƒ offline(data)
      online: ƒ online()
    }

    它是一个对象,如果离线执行某个redux操作,它将被动态更改。我想把它放在我的Redux商店里-
    store.dispatch({ type: 'ADD_TO_ACTION_QUEUE', payload: methodToQueue.afterOffline });
    减速器看起来像这样-

    const initialState = {
      functionsQueue: []
    };
    
    const reducer = (state = initialState, action) => {
      switch (action.type) {
    	case 'ADD_TO_ACTION_QUEUE':
    	  return Object.assign({}, state, {
    		functionsQueue: state.functionsQueue.concat([action.payload])
    	  });
    	default:
    	  return state;
    	}
    }

    但它不想保存方法来存储它保存 null . 即使我想用 JSON.stringify() 并存储所有对象,它只保存没有任何逻辑的属性。 { type: 'ADD_TO_ACTION_QUEUE', payload: JSON.stringify(methodToQueue) } -只保存 dependsOnNetworkStatus: true .
    您知道如何将一些函数保存到Redux存储区以便在执行后使用吗?它也可能是本地存储。 提前谢谢你!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Abdennour TOUMI    6 年前

    Redux Store用于保持 状态 . 状态可以是字符串、数字、字符串和数字的数组,以及 函数的对象。

    如果要存储函数,请处理其名称,因为 函数名 一根绳子 . 然后,在另一个层(中间件)中,捕捉这个名称并通过反射调用相关的函数。