我需要使用redux-persist将根应用程序组件延迟到我的 redux 商店 autoHydrates 为止。但是在使用热重载时使用此代码会导致开发错误:
const App = () => (
<MuiThemeProvider>
<Provider store = {store}>
{getRoutes(checkAuth, history)}
</Provider>
</MuiThemeProvider>
)
class AppProvider extends Component {
constructor () {
super()
this.state = { rehydrated: false }
}
componentWillMount () {
persistStore(store, {storage: localforage}, () => {
this.setState({ rehydrated: true })
})
}
render () {
if (!this.state.rehydrated) {
return <div>Loading...</div>
}
return (
<App />
)
}
}
ReactDOM.render(
<AppProvider/>,
document.getElementById('app')
)
如果我把它改成这个,它可以工作(热重载时没有错误):
const App = () => (
<MuiThemeProvider>
<Provider store = {store}>
{getRoutes(checkAuth, history)}
</Provider>
</MuiThemeProvider>
)
ReactDOM.render(
<App/>,
document.getElementById('app')
)
我尝试使用 process.env.NODE_ENV 检查它是“生产”还是“开发”,因此我可以有条件地运行上述代码片段,但是,由于某种原因,如果我在条件中添加有状态组件片段,它仍然会导致该错误仅在 process.env.NODE_ENV === 'development' 时运行 当我更改在 HomeConatiner 中呈现的组件中的某些内容时,我收到以下错误:
warning.js:36 警告:React.createElement:类型不应为 null、未定义、布尔值或数字。它应该是一个字符串(对于 DOM 元素)或一个 ReactClass(对于复合组件)。检查
HomeContainer
.未捕获的错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。检查
HomeContainer
.(...)的渲染方法