尝试从操作/还原器中调用操作失败。我知道这是一种反模式,但我想要自定义日志(将有一个日志视图)的应用程序中发生的事情。一个视图将列出这些项目。来自还原器的反应呼叫记录器操作
运行此我得到的错误:
Reducers may not dispatch actions
如果我理解正确的话,我应该使用的演员,但无法找到很好的例子。 就如何使可从减速和动作来触发自定义记录任何建议(工作从组件罚款)
动作/ log.js
import {appError} from './index';
import moment from 'moment'
import {store} from '../containers/app';
// ------- LOG WHATS HAPPENING -------
export const LOG_ADD = 'LOG_ADD';
export function logAdd(item){
return {
type: LOG_ADD,
item: item
}
}
export function triggerLog(log){
return function (dispatch, getState) {
dispatch(logAdd(log));
}
}
export const LOG_ITEM_ERROR = "logerror";
export const LOG_ITEM_NOTIFY = "lognotify";
export class Log {
constructor(type,title,msg1,msg2) {
this.date = moment().unix();
this.type = type;
this.title = title;
this.msg1 = msg1;
this.msg2 = msg2;
}
static error(title,msg1,msg2){
dispatch(triggerLog(new Log(LOG_ITEM_ERROR,title,msg1,msg2)));
}
static notify(title,msg1,msg2){
store.dispatch(triggerLog(new Log(LOG_ITEM_NOTIFY,title,msg1,msg2)));
}
}
减速器/ version.js
export default function version(state = initialVersion,action){
switch(action.type){
case VERSION_RESPONSE:
if(action.json.UpdateRequired){
console.log("FORCE UPDATE");
Log.error('Version','Force update');
//@TODO make sure app gets updated
return;
}
Log.notify('Version','Check complete');
return Object.assign({}, state, {
isDone: true,
isFetching: false,
isValid: true
})
SOLUTION
升级反应原生0.30 不要在操作使用调度:
export function getVersion() {
return function (dispatch, getState) {
dispatch(mycall()); // <-- do not do this
现在的代码示例工程。
redux devtools不适合你吗? –
来更明确地指定。这不是用于开发日志,而是用于生产。应用程序将显示这些日志的显示位置。 – roady