【发布时间】:2016-03-11 17:01:25
【问题描述】:
我正在使用 react、redux 和 react router 来构建和示例应用程序。
我正在尝试异步加载应用程序的不同部分。我已将我的应用程序划分为鸭子,我正在遵循这个示例https://github.com/insin/react-examples/tree/master/code-splitting-redux-reducers
但是我收到了这个错误:
Uncaught Invariant Violation: The root route must render a single element
尝试使用 react 路由器的 getComponent 方法获取异步组件时。 我正在使用: 反应路由器 2.0.1
我的路线:
export default function configureRoutes(reducerRegistry) {
return(
<Route>
<Route component={Landing}>
<Route path='/login' component={Login}/>
<Route path='/register' component={Register}/>
</Route>
<Route path="admin" getComponent={(location, cb) => {
require.ensure([], require => {
cb(null, require('./containers/admin'))
})
}}/>
<Route component={App}>
<Route path='/' component={Home} />
</Route>
</Route>
)}
我的组件
class Admin extends Component {
componentDidMount() {
this.props.load()
}
render() {
const { message, isFetching } = this.props
return (
<div>
<p>{message}</p>
<p>This module was loaded via chunk </p>
{loading && <p>Doing some fake loading ...</p>}
</div>
)
}
}
Admin.propTypes = {
message: PropTypes.string.isRequired,
isFetching: PropTypes.bool.isRequired,
load: PropTypes.string.isRequired
}
const mapStateToProps = state => state.admin
function mapDispatchToProps(dispatch) {
return bindActionCreators({ load }, dispatch)
}
export default connect(mapStateToProps, mapDispatchToProps)(Admin)
有人有同样的错误吗?有任何想法吗?有人有类似的工作吗?
感谢社区!
更新:为清晰起见添加了 index.js
import configureRoutes from './routes'
import configureStore from './store/configureStore'
import coreReducers from './modules/core'
import ReducerRegistry from './reducer-registry'
var reducerRegistry = new ReducerRegistry(coreReducers)
// Configure hot module replacement for core reducers
if (process.env.NODE_ENV !== 'production') {
if (module.hot) {
module.hot.accept('./modules/core', () => {
var nextCoreReducers = require('./modules/core')
reducerRegistry.register(nextCoreReducers)
})
}
}
const routes = configureRoutes(reducerRegistry)
const store = configureStore(reducerRegistry)
render(
<I18nextProvider i18n={i18n}>
<Provider store={store}>
<Router history={browserHistory} routes={routes} />
</Provider>
</I18nextProvider>,
document.getElementById('root')
)
【问题讨论】:
-
错误非常具体,与异步部分无关。请查看您所遵循示例中的路由配置。请注意所有
Routes都有路径吗? github.com/insin/react-examples/blob/master/… -
你的根路径
/必须是根,实际上.. -
我在 dev webpack 1.12.13 webpack-dev-middleware 1.5.1 webpack-hot-middleware 2.6.4 上使用的 Webpack 版本
-
你的路由配置不正确,和webpack无关。
-
@azium 我不知道我是否明白你在说什么。我的路线也有一个指向管理员的路径(我错过了“/”,但如果我添加它会引发同样的错误)
标签: react-router redux