Redux 存储:元素类型无效:应为字符串
Posted
技术标签:
【中文标题】Redux 存储:元素类型无效:应为字符串【英文标题】:Redux store: Element type is invalid: expected a string 【发布时间】:2018-11-21 09:43:24 【问题描述】:我第一次使用 typescript 为 redux 设置商店时出错。
错误信息如下:
元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。
11 | // tslint:disable-next-line 12 | const store = configureStore(undefined); 13 | > 14 | render( 15 | <Provider store=store> 16 | <ConnectedRouter history=createHistory()> 17 | <App />
import * as React from 'react';
import render from 'react-dom';
import ConnectedRouter from 'react-router-redux';
import Provider from 'react-redux';
import configureStore from './store/configureStore';
import createHistory from 'history/createBrowserHistory';
import App from './App';
import './styles/styles.css';
// tslint:disable-next-line
const store = configureStore(undefined);
render(
<Provider store=store>
<ConnectedRouter history=createHistory()>
<App />
</ConnectedRouter>
</Provider>,
document.getElementById('root') as htmlElement
);
我的配置存储:
import createStore from 'redux';
import rootReducer from '../reducers';
interface WindowModuleHot extends Window
module:
hot:
accept: (path: string, callback: () => void) => void;
;
;
export default function configureStore(initialState: any)
const store = createStore(rootReducer, initialState);
const hotWindow = window as WindowModuleHot;
if (hotWindow.module && hotWindow.module.hot)
// Enable Webpack hot module replacement for reducers
hotWindow.module.hot.accept('../reducers', () =>
const nextReducer = require('../reducers');
store.replaceReducer(nextReducer);
);
return store;
【问题讨论】:
您在哪一行得到错误? 我已添加到帖子中。谢谢 检查您的进口商品之一是否也被导出 为什么未定义传递给configureStore? @Rahamin 也不确定,但这对github.com/coryhouse/react-slingshot 有效。我一直在建造类似的东西。我检查了所有导出,当我删除ConnectedRouter history=createHistory()
时应用程序运行
【参考方案1】:
ConnectedRouter 适用于 react-router-redux 的 version 5.0。 npm 当前指向 v4.0.8 here。
【讨论】:
以上是关于Redux 存储:元素类型无效:应为字符串的主要内容,如果未能解决你的问题,请参考以下文章
反应本机错误!元素类型无效:应为字符串或类/函数,但得到:未定义
元素类型无效:应为字符串(用于内置组件)或类/函数(用于复合组件)但得到:对象。反应原生
获取`元素类型无效:使用react-redux-router时预期出现字符串`错误
错误:元素类型无效:需要一个字符串(对于内置组件)reactjs