ReactJS ES2015 子组件

Posted

技术标签:

【中文标题】ReactJS ES2015 子组件【英文标题】:ReactJS ES2015 Child Components 【发布时间】:2016-12-24 12:01:06 【问题描述】:

我是 ReactJS 的新手,我正在基于 ES2015 学习它。大多数例子是 ES5。我的问题似乎是渲染子组件。

我的子组件是一个 TextField

import React, Component from 'react';

class TextField extends Component 
  constructor(props, context)
    super(props, context);
    this.state = 
      customer: 
        custno: props.customer.custno
      
    ;
    

  render() 
      if(this.props.displayMode) 
        return <span>this.props.custno</span>
      
      return <input type="text" ...this.props />
  


export default TextField;

我的父组件称为 AddressBox 并将包含许多子控件。如果 displayMode 为 true,那么它应该呈现一个 SPAN,如果它是 false,它应该呈现一个表单控件。

地址框代码为:

import React, Component from 'react';
import TextField from '../textfield/textfield.js';

class AddressBox extends Component 
  constructor(props, context)
    super(props, context);
    this.state = 
      customer: 
        custno: ""
      
    ;
    this.onCustomerNumberChange = this.onCustomerNumberChange.bind(this);
    

  onCustomerNumberChange(event) 
    const customer = this.state.customer;
    customer.custnumber = event.target.value;
    this.setState(customer: customer);
  

  render() 
      return (
        <div className="addressbox">
          <h1>Address Box</h1>
          <label>Customer Number:</label>
          <TextField value=this.state.customer.custno onChange=this.onCustomerNumberChange />
        </div>
      );
  


AddressBox.defaultProps= 
  customer: 
    name: "",
    custnumber: ""
  


export default AddressBox;

当我尝试渲染这些控件时,我收到以下错误:

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

未捕获的不变违规:元素类型无效:预期为 字符串(用于内置组件)或类/函数(用于复合 组件)但得到:未定义。检查渲染方法 AddressBox.

我能找到的所有示例都使用了之前的 React.createClass 方法。谁能告诉我为什么 TextField 会抛出错误?

【问题讨论】:

【参考方案1】:

我发现我使用了错误的导入语法。

我正在使用

import TextField from '../textfield/textfield';

我应该在什么时候使用:

import TextField from '../textfield/textfield';

【讨论】:

以上是关于ReactJS ES2015 子组件的主要内容,如果未能解决你的问题,请参考以下文章

分发用 ES6 编写的 ReactJS 组件并在 ES5 源代码中使用它们

在 ReactJS 中显示/隐藏组件

ReactJs - 如何在一个组件中使用多个子组件

从reactjs中的父组件调用子组件方法

ReactJS:访问父组件中的子组件属性

转译(客户端)后更改 ReactJS 子组件?