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

如何修复 Invariant Violation:元素类型无效:预期为字符串(对于内置组件)

错误:元素类型无效:在尝试更新状态时,应在反应中出现字符串