React 函数组件和类组件

React 组件分两种:

  1. 继承 React.Component 的类组件
  2. 无状态函数组件

类组件举例:

class AddOption extends React.Component {
  constructor(props) {
    super(props);
    this.handleAddOption = this.handleAddOption.bind(this);
    this.state = {
      error: undefined,
    };
  }
  handleAddOption(e) {
    e.preventDefault();
    const option = e.target.elements.option.value.trim();
    const error = this.props.handleAddOption(option);
    this.setState(() => {
      return { error };
    });
  }
  render() {
    return (
      <div>
        {this.state.error && <p>{this.state.error}</p>}
        <form onSubmit={this.handleAddOption}>
          <input type="text" name="option" />
          <button>AddOption</button>
        </form>
      </div>
    );
  }
}

函数组件没有render()。 函数组件举例:

const Action = (props) => {
  return (
    <div>
      <button onClick={props.handlePick} disabled={!props.hasOptions}>
        What should I do?
      </button>
    </div>
  );
};

两种组件都有各自适用的场合,并非一种比另一种好。

函数组件的特点:

  1. 是一个react组件
  2. 无state
  3. 是一个函数

函数组件的优势:

  1. 比基于类的组件快,因为开销小,所以要尽可能使用函数组件。如果一个组件只有一个 render() 函数,基本都可以改成函数组件。
  2. 函数组件读写都更容易。
  3. 测试起来远比基于类的组件测试容易。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值