TypeScript React项目用Redux Provider包裹App时报对象不可作为React子元素错误
错误原因
你的报错完全来自StoreWrapper组件的参数定义错误:
React 函数组件的第一个入参是完整的props对象,你直接将入参命名为children,此时变量children实际的值是{children: <App />}这个对象,你直接把对象放在Provider内部渲染,自然触发了「Objects are not valid as a React child」的错误。
修复代码
修改StoreWrapper.tsx中的组件定义即可:
// 原错误写法 // const StoreWrapper = (children: any) => { // 修复写法,从props中解构出children属性 const StoreWrapper = ({ children }: { children: React.ReactNode }) => { return <Provider store={store}>{children}</Provider>; };
额外注意项
你代码中(window as any).__REDUX_ DEVTOOLS_EXTENSION_COMPOSE__ 存在多余空格,REDUX_和DEVTOOLS之间的空格需要删除,否则Redux开发者工具无法正常生效:
// 修复后 const composeEnhancers = (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
内容的提问来源于stack exchange,提问作者gusti
相关产品推荐
相关产品推荐

