将函数添加到队列以便稍后执行。终极版

时间:2018-05-26 10:24:08

标签: javascript reactjs react-native redux progressive-web-apps

朋友。
我遇到了一个问题。 我有这行代码



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存储中?它也可能是localStorage。 先谢谢你!

1 个答案:

答案 0 :(得分:1)

Redux商店用于保留状态。状态可以是字符串,数字,字符串和数字的数组以及函数'对象。

如果您想存储功能,请处理其名称,因为功能名称一个字符串。然后,在另一层(中间件)中,捕获该名称并通过反射调用相关函数。