react无状态组件

 

 

 

一个普通组件只有render函数的时候,我们完全可以通过一个无状态组件来替换掉这个普通组件。

无状态组件相对于这个普通函数的优势如下:

无状态组件的性能比较高。

因为无状态组件就是一个函数。而普通组件是js里面的一个类,而这个类生成的对象里还有生命周期函数,他执行起来既要执行生命周期函数,还要执行render,性能是一定比不上无状态组件的。

 

 

 

普通组件如下:

//这是UI组件,只负责渲染页面,不负责逻辑处理
import React, { Component } from 'react';
import "antd/dist/antd.css";
import { Input, Button, List, Typography, Tag } from "antd";

//这是无状态组件:(无状态组件就是一个函数)
class ToDoListUI extends Component {
    render() {
        return (
          <div style={{ marginTop: "10px" }}>
            <Input
              value={this.props.inputValue}
              placeholder="请输入电影名字"
              style={{ width: "300px" }}
              onChange={this.props.handleInputChange}
            />
            <Button onClick={this.props.handleButtonClick} type="primary">
              提交
            </Button>
            <br />
            <Tag color="lime">想看的电影愿望清单:</Tag>
            <List
              style={{ marginTop: "10px", width: "300px" }}
              bordered
              dataSource={this.props.list}
              renderItem={(item, index) => (
                <List.Item
                  onClick={(index) => {this.props.handleItemDelete(index)}}
                >
                  {item}
                </List.Item>
              )}
            />
          </div>
        );
    }
}

export default ToDoListUI;

 

无状态组件:

//这是UI组件,只负责渲染页面,不负责逻辑处理
import React, { Component } from 'react';
import "antd/dist/antd.css";
import { Input, Button, List, Typography, Tag } from "antd";


const ToDoListUI = (props) => {
  return (
    <div style={{ marginTop: "10px" }}>
      <Input
        value={props.inputValue}
        placeholder="请输入电影名字"
        style={{ width: "300px" }}
        onChange={props.handleInputChange}
      />
      <Button onClick={props.handleButtonClick} type="primary">
        提交
      </Button>
      <br />
      <Tag color="lime">想看的电影愿望清单:</Tag>
      <List
        style={{ marginTop: "10px", width: "300px" }}
        bordered
        dataSource={props.list}
        renderItem={(item, index) => (
          <List.Item
            onClick={index => {
              props.handleItemDelete(index);
            }}
          >
            {item}
          </List.Item>
        )}
      />
    </div>
  );
}

export default ToDoListUI;

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值