Javascript React Redux路由器错误
我正在尝试安装Redux+React路由器应用程序。我认为问题在于ImmutableJS,但我不知道如何解决它 client.jsJavascript React Redux路由器错误,javascript,reactjs,redux,react-router,Javascript,Reactjs,Redux,React Router,我正在尝试安装Redux+React路由器应用程序。我认为问题在于ImmutableJS,但我不知道如何解决它 client.js 从“不可变”导入{fromJS} 从“React”导入React 从“react dom”导入{render,unmountComponentAtNode} 从“react hot loader”导入{AppContainer} 从“react redux”导入{Provider} 从“react Router”导入{match,Router,browserHist
从“不可变”导入{fromJS}
从“React”导入React
从“react dom”导入{render,unmountComponentAtNode}
从“react hot loader”导入{AppContainer}
从“react redux”导入{Provider}
从“react Router”导入{match,Router,browserHistory}
从“react router redux”导入{syncHistoryWithStore}
从“redux”导入{createStore,CombineReducer,compose,applyMiddleware}
从“react router redux”导入{routerReducer,routerMiddleware}
函数createSelectLocationState(reducerName){
让我们的国家;
让我们来看看prevRoutingStateJS;
返回(状态)=>{
const routingState=state.get(reducerName);//或state.routing
如果(!routingState.equals(prevRoutingState)){
prevRoutingState=路由状态;
prevRoutingStateJS=routingState.toJS();
}
返回prevRoutingStateJS;
};
}
函数配置存储(历史记录、初始状态){
常数减速机=组合减速机({
路由:路由导出器
});
返回createStore(
减速器,
初始状态,
谱写(
applyMiddleware(
路由器管理软件(历史记录)
)
)
);
}
const initialState=fromJS(窗口初始状态);
常量存储=配置存储(浏览器历史记录,初始状态);
const history=syncHistoryWithStore(浏览器历史记录、存储、{
selectLocationState:createSelectLocationState('路由')
});
const rootNode=document.getElementById('root');
常量renderApp=()=>{
常量路由=需要('./路由');
匹配({history,routes},(错误,重定向位置,renderProps)=>{
渲染(
在状态下
此对象
我使用“react”:“^15.3.2”
,“redux”:“^3.6.0”
,“react路由器”:“^3.0.0”
更新1
我现在使用redux immutable
中的combinereducer
:
import {combineReducers} from 'redux-immutable'
但是得到一个错误:
未捕获类型错误:routingState.equals不是函数
在这里:
更新2
我修正了上面的问题,但还有一个错误
我在存储库中发布的所有代码您正在使用的组合转换器
没有使用不可变
。通过设置fromJS(blah)
,每个分支都是不可变的,但不是在您的状态的最高级别。请改用redux immutable
:
从'redux immutable'导入{combinereducer};
问题仍然存在于route.js的src/index.js
文件和require
语句中
如果require
es6
模块具有默认值
,则必须使用require
d模块中的默认值。类似
const routes = require('./routes').default;
这解决了您的问题,没有对您的git repo进行任何其他更改。是的,问题已经解决,但不是错误未捕获类型错误:routingState.equals不是一个函数(…)您或者没有创建历史记录,或者没有将历史记录传递给路由器。我不明白,在我的代码中它应该是什么样子?