javascript - React-Redux 容器抛出 "mapStateToProps() in Connect(ModalRoot) must return a plain object. Instead received undefined."

标签 javascript reactjs modal-dialog redux react-redux

我正在根据 Dan Abramov 对这个问题的解决方案构建一个基于 Redux 的模型/对话框触发器:Dan Abramov's solution

我收到的错误是“Connect(ModalRoot) 中的mapStateToProps() 必须返回一个普通对象。而不是收到 undefined object 。”


以下是模式容器的代码以及调用它的代码:

// Code that calls the Modal Container

import React from 'react';
import { Provider } from 'react-redux';
import { Connector as HorizonConnector } from 'horizon-react';
import getMuiTheme from 'material-ui/styles/getMuiTheme';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';

import routes from '../routes';
import store from '../store';
import horizon from '../db';
import ModalRoot from './Modal';

export default () => (
  <MuiThemeProvider muiTheme={getMuiTheme()}>
    <HorizonConnector horizon={horizon} store={store}>
      <div className="app">
        {routes}
        <ModalRoot />
      </div>
    </HorizonConnector>
  </MuiThemeProvider>
);

 // The Modal Container
 import LoginModal from '../components/Modals/LoginModal'
 import {connect} from 'react-redux'

const MODAL_COMPONENTS = {
  'LOGIN_MODAL': LoginModal
  /* other modals */
}

const ModalRoot = ({ modalType, modalProps }) => {
  if (!modalType) {
    return <span /> // after React v15 you can return null here
  }

  const SpecificModal = MODAL_COMPONENTS[modalType]
  return <SpecificModal {...modalProps} />
}

export default connect(
  state => state.modal
)(ModalRoot)


这可能是一些简单的事情,我忘记了,但它让我发疯,欢迎任何评论或建议。

最佳答案

根据 redux 实现和示例,你应该这样写

export default connect(
  state => ({
    modal: state.modal
  })
)(ModalRoot)

参见here

关于javascript - React-Redux 容器抛出 "mapStateToProps() in Connect(ModalRoot) must return a plain object. Instead received undefined.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37579510/

相关文章:

javascript - 我如何在 Next.js 中删除 ID 为 ="__next"的 div

reactjs - react 延迟加载javascript文件

javascript - 如何使用我的 API 的 response.data 并将其格式化为 React.js 中的可用数组

javascript - 如何将 Canvas 保存为 png 图像?

javascript - Multer 返回 req.file undefined

angular - 从父组件重置表单

javascript - 如何在宽屏中隐藏 Bootstrap 模式

c++ - 当模态对话框处于事件状态时检测主应用程序窗口上的 WM_CLOSE 事件?

javascript - ESLint 错误使用 Object.keys 而不是 for..in

javascript - PDF A4 页面中的网站内容不响应