2

我在我的应用程序中使用 reactjs、react-router 和 redux。我正在使用异步操作,以下是我的 action.js 代码

  signUser(state,user) {
    return function (dispatch){
      return dispatch(requestSignUp());
    }
  }


export default function requestSignUp(){
 return {
   type: Actions.REQUEST,
   signUserReducer:{
    action: Actions.REQUEST
   }
  }
 }

以下是我的 store.js 代码

const reducer = combineReducers(reducers);
let finalState = compose(applyMiddleware(thunk, logger()))(createStore)

export default function configureStore(initialState) {
  return finalState(reducer, initialState);
}

以下是我的 reducer.js 代码

export default function signUserReducer(state = initialState, action) {

if (typeof state == 'undefined') {
    return state;
}

switch (action.type) {

    case Actions.REQUEST:
        return Object.assign({}, state, {
            action: action.signUserReducer.action
        });
    default:
        return state;
}
}

现在,每当我发送一个操作时,我的浏览器控制台上都会显示一个错误,说明

警告:[react-router] 你不能改变'Router routes';它将被忽略

我尝试用'react-router-redux'解决这个问题,但它没有解决。

4

1 回答 1

2

这是 Redux 创建者的答案,他留在github 上,我认为这很有意义

一个好的第一步是再次查看错误消息。这不是随机错误;它实际上告诉了发生了什么。它说 Router组件不能接受routesprop 的新值。这意味着您每次渲染根组件时都在重新创建新路由,而不是在应用程序的生命周期内创建一次,这是 React Router 打算支持的场景。结论是您需要查看渲染 Router 组件的位置,并确保您不会在每个 render 上创建路由

于 2016-08-03T05:53:17.270 回答