react-redux嵌套组件而不是父级的ReactClass?

时间:2016-12-18 21:26:36

标签: javascript reactjs redux

我有点新的反应和减少,但取得了很大的进步。 我正在使用redux connect将状态映射到props。在我遇到这种情况之前,我的工作就像魅力一样:

父组件正在使用mapStateToProps,以下是它的源代码:

import React from 'react';
import { connect } from 'react-redux'
import { NestedComponent } from './NestedComponent'

class ParentElement extends React.Component {
  render() {
    return (
      <div className="App">
        <NestedComponent/>
      </div>
    );
  }
}

const mapStateToProps = state => {
  const { questions } = state
  return {
    questions
  }
}

ParentElement.contextTypes = {
    router: React.PropTypes.object.isRequired
}

export default connect(mapStateToProps)(ParentElement)

以下是嵌套元素的代码:

import React from 'react';
import { connect } from 'react-redux'

class NestedComponent extends React.Component {
  render() {
    return (
        <div> I am nested</div>
    );
  }
};

const mapStateToProps = state => {
  const { questions } = state
  return {
    questions
  }
}

NestedComponent.contextTypes = {
    router: React.PropTypes.object.isRequired
}

export default connect(mapStateToProps)(NestedComponent)

当我尝试显示父元素时,我收到此错误:

  

警告:React.createElement:type不应为null,未定义,   布尔值或数字。它应该是一个字符串(对于DOM元素)或a   ReactClass(用于复合组件)。检查渲染方法   ParentElement

我错过了什么/做错了什么?

1 个答案:

答案 0 :(得分:2)

像这样导入头文件: -

import NestedComponent from './NestedComponent'

没有牙套。

当一个类作为默认导出时,它导入时没有大括号,因为文件中只有一个默认类,但是当没有默认导出类时,你必须用大括号导入它,因为它可以有多个在文件中包含导出关键字的类(es6约定)。