嘗試從操作/還原器中調用操作失敗。我知道這是一種反模式,但我想要自定義日誌(將有一個日誌視圖)的應用程序中發生的事情。一個視圖將列出這些項目。來自還原器的反應呼叫記錄器操作
運行此我得到的錯誤:
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