Reactjs &引用;React.createElement:类型无效";使用ConnectedRouter时
代码是一个演示水疗中心,有两条路线(回家和柜台)。为什么捆绑时使用Reactjs &引用;React.createElement:类型无效";使用ConnectedRouter时,reactjs,react-router,react-router-redux,Reactjs,React Router,React Router Redux,代码是一个演示水疗中心,有两条路线(回家和柜台)。为什么捆绑时使用ConnectedRouter会发出以下警告,而使用BrowserRouter则可以正常工作 Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely
ConnectedRouter
会发出以下警告,而使用BrowserRouter
则可以正常工作
Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in. Check the render method of `Unknown`.
in Unknown
in AppContainer
App.jsx
import React from 'react';
import { createStore, combineReducers, applyMiddleware } from 'redux';
import { Provider } from 'react-redux';
import { Route } from 'react-router-dom';
import { ConnectedRouter, routerReducer, routerMiddleware } from 'react-router-redux';
import createHistory from 'history/createBrowserHistory';
import Counter from './containers/Counter';
import countReducer from './reducers';
const history = createHistory();
const store = createStore(
combineReducers({
count: countReducer,
router: routerReducer
},
applyMiddleware(
routerMiddleware(history)
)
);
export default () => (
<Provider store={store}>
<ConnectedRouter history={history}>
<div>
<Route exact path="/" render={() => <h1>Hello, World!</h1>} />
<Route path="/counter" component={Counter} />
</div>
</ConnectedRouter>
</Provider>
);
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
const render = (Component) => {
ReactDOM.render(
Component,
document.getElementById('root')
);
};
if (process.env.NODE_ENV === 'production') {
render(<App />);
} else {
const { AppContainer } = require('react-hot-loader');
render(
<AppContainer>
<App />
</AppContainer>
);
if (module.hot) {
module.hot.accept('./App', () => {
const NextApp = require('./App').default;
render(
<AppContainer>
<NextApp />
</AppContainer>
);
});
}
}
从“React”导入React;
从'redux'导入{createStore,combinereducer,applyMiddleware};
从'react redux'导入{Provider};
从'react router dom'导入{Route};
从“react router redux”导入{ConnectedRouter,routerReducer,routerMiddleware};
从“历史记录/createBrowserHistory”导入createHistory;
从“./集装箱/柜台”导入柜台;
从“./reducers”导入countReducer;
const history=createHistory();
const store=createStore(
组合传感器({
count:countReducer,
路由器:路由器导出器
},
applyMiddleware(
路由器管理软件(历史记录)
)
);
导出默认值()=>(
你好,世界!}/>
);
index.jsx
import React from 'react';
import { createStore, combineReducers, applyMiddleware } from 'redux';
import { Provider } from 'react-redux';
import { Route } from 'react-router-dom';
import { ConnectedRouter, routerReducer, routerMiddleware } from 'react-router-redux';
import createHistory from 'history/createBrowserHistory';
import Counter from './containers/Counter';
import countReducer from './reducers';
const history = createHistory();
const store = createStore(
combineReducers({
count: countReducer,
router: routerReducer
},
applyMiddleware(
routerMiddleware(history)
)
);
export default () => (
<Provider store={store}>
<ConnectedRouter history={history}>
<div>
<Route exact path="/" render={() => <h1>Hello, World!</h1>} />
<Route path="/counter" component={Counter} />
</div>
</ConnectedRouter>
</Provider>
);
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
const render = (Component) => {
ReactDOM.render(
Component,
document.getElementById('root')
);
};
if (process.env.NODE_ENV === 'production') {
render(<App />);
} else {
const { AppContainer } = require('react-hot-loader');
render(
<AppContainer>
<App />
</AppContainer>
);
if (module.hot) {
module.hot.accept('./App', () => {
const NextApp = require('./App').default;
render(
<AppContainer>
<NextApp />
</AppContainer>
);
});
}
}
从“React”导入React;
从“react dom”导入react dom;
从“./App”导入应用程序;
常量渲染=(组件)=>{
ReactDOM.render(
组成部分,
document.getElementById('root'))
);
};
if(process.env.NODE_env===‘生产’){
render();
}否则{
const{AppContainer}=require('react-hot-loader');
渲染(
);
如果(模块热){
module.hot.accept('./App',()=>{
const nextap=require('./App')。默认值;
渲染(
);
});
}
}
显示AppContainer组件。@安德鲁:你能详细说明一下吗?我也尝试在顶部导入它,但结果相同。我错过了AppContainer是hotloader组件。我认为这是自定义的。我不确定哪里有问题。如果你改为导出默认值()=>(测试)
您会有错误吗?问题在完全重写后得到解决。不知道我遗漏了什么。