我收到一个控制台警告,提示已弃用渲染并运行 React 17 而不是 React 18。此外,redux 已弃用 createStore 以支持 configureStore。我将如何实现新的 createRoot 和 configureStore?
const store = createStore(reducers, compose(applyMiddleware(thunk)));
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
回答1
根据我们在 https://redux.js.org/tutorials/fundamentals/part-8-modern-redux#store-setup 上的文档,您的 createStore
调用可以替换为:
const store = configureStore({
reducer: reducers,
})
(是的,就是这样!它为您完成了 compose
和 applyMiddleware(thunk)
步骤。)
请注意,reducers
变量也可以通过将这些切片缩减器直接传递给 configureStore
来跳过:
const store = configureStore({
reducer: {
users: usersReducer,
posts: postsReducer,
// etc
}
})
对于 createRoot
,根据 https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html#updates-to-client-rendering-apis ,切换到:
const reactRoot = createRoot(document.getElementById('root'));
reactRoot.render(
<Provider store={store}>
<App />
</Provider>
)