是否有一种方法可以在生产中以编程方式导出存储状态/操作,可以将导入回到开发工具中?
例如,我可以设置中间件来捕获当前状态并将其发送给诸如(Trackjs,Sentry, Rollbar)之类的东西,但缺少所有先前的状态和动作。
我想以与从Redux Dev Tools导出相同的格式捕获。
从Dev Tools导出示例
{"monitorState":{},"actionsById":{"0":{"type":"PERFORM_ACTION","action":{"type":"@@INIT"},"timestamp":1471017239656},"1":{"type":"PERFORM_ACTION","action":{"type":"INCREMENT"},"timestamp":1471017242004}},"nextActionId":2,"stagedActionIds":[0,1],"skippedActionIds":[],"committedState":5,"currentStateIndex":1,"computedStates":[{"state":5},{"state":6}]}
这是目前在开发中,但你现在可以在扩展中推送动作历史记录见https://github.com/zalmoxisus/remotedev-server/pull/20
另一个选项是将操作保存为JSON文件中的数组,然后将它们导入。
这是可能的https://github.com/zalmoxisus/redux-devtools-extension/issues/173
logger.js
let actions = []
export function logActions (stateSanitizer) {
return store => next => action => {
actions.push(action)
return next(action)
}
}
这些操作可以保存到文件或数据库中,也可以导入到开发工具中。
样本行为
[{
"type": "INCREMENT"
}, {
"type": "DECREMENT"
}, {
"type": "DECREMENT"
}, {
"type": "DECREMENT"
}, {
"type": "DECREMENT"
}]
我创建了这个repo来演示这个操作https://github.com/timarney/redux-trackjs-logger它使用中间件来记录错误发生时的操作
我为Redux维护一个名为Raven的Redux中间件,它将Redux数据附加到Sentry错误报告中。目前,它向每个错误报告添加以下上下文:
- 完整的状态对象。
- 完整的最后一个动作对象。
- 导致当前状态的所有动作的
type
。这些被添加为"面包屑"。
哨兵博客有一个更详细的描述:https://blog.sentry.io/2016/08/24/redux-middleware-error-logging.html
你可以在这里找到作为NPM包的中间件:https://github.com/captbaritone/raven-for-redux