美文网首页
无状态组件

无状态组件

作者: 泡杯感冒灵 | 来源:发表于2022-03-27 17:09 被阅读0次
当一个组件只有一个render函数的时候,就可以用无状态组件来定义这个组件。无状态组件其实就是一个函数。接收props作为参数,props就是父组件传递过来的数据,要求返回一段jsx。
import React,{Component} from 'react';
import 'antd/dist/antd.css';
import { Input,Button,List } from 'antd';

// 这个函数里,直接使用props就可以了,不需要this.props
const TodoListUI = (props) => {
    return (
        <div style={{margin:'10px'}}>
            <div>
                <Input 
                    value={props.inputValue}  
                    placeholder="todo info" 
                    style={{width:'300px',marginRight:'10px'}}
                    onChange={props.handleInputChange}
                >
                </Input>
                <Button 
                    type="primary"
                    onClick={props.handleBtnClick}
                >
                    提交
                </Button>
            </div>
            <List
                style={{marginTop:'10px',width:'300px'}}
                bordered
                dataSource={props.list}
                renderItem={(item,index) => <List.Item onClick={()=> {props.handleItemDelete(index)}}>{item}</List.Item>}
            />
        </div>
    )
}

// class TodoListUI extends Component {
//     render(){
//         return (
//             <div style={{margin:'10px'}}>
//                 <div>
//                     <Input 
//                         value={this.props.inputValue}  
//                         placeholder="todo info" 
//                         style={{width:'300px',marginRight:'10px'}}
//                         onChange={this.props.handleInputChange}
//                     >
//                     </Input>
//                     <Button 
//                         type="primary"
//                         onClick={this.props.handleBtnClick}
//                     >
//                         提交
//                     </Button>
//                 </div>
//                 <List
//                     style={{marginTop:'10px',width:'300px'}}
//                     bordered
//                     dataSource={this.props.list}
//                     renderItem={(item,index) => <List.Item onClick={()=> {this.props.handleItemDelete(index)}}>{item}</List.Item>}
//                 />
//             </div>
//         )
//     }
// }

export default TodoListUI;
无状态组件相对于普通的组件的优势是什么?
  • 无状态组件性能比较高,因为无状态组件其实就是一个函数,普通组件是一个JS里的类,这个类生成的对象里,还会有一些生命周期函数,它执行起来,既要执行生命周期函数,又要执行render,它执行的东西,远比函数执行的东西要多的多,所以一个普通组件的性能,肯定是比不上一个无状态组件的。
无状态组件什么时候用呢?
  • 当我们定义一个UI组件的时候,因为它只负责页面渲染,不用做任何的逻辑操作,这个时候,我们就可以用无状态组件来定义这个UI组件。(这不是绝对的,UI组件理论上虽然是只负责渲染,但是让他做一些简单的逻辑,也是可以的。并不是定死的。)

相关文章

  • React入门(八)无状态组件

    本节知识点 (1) 无状态组件和有状态组件的区别 (2) 无状态组件的使用 (一)无状态组件和有状态组件的区别 (...

  • 函数式组件和类组件

    类组件(有状态组件) 函数式组件(无状态组件)没有生命周期 受控组件:所有的状态都没有,受外部组件控制才能改变状态...

  • react组件设计心得

    无状态组件有状态组件

  • 组件

    组件定义 组件的props 组件的state 有状态组件和无状态组件 属性校验和默认属性 组件样式

  • Flutter StatefullWidget 三种状态管理De

    在Flutter中,组件的状态管理还是非常重要的,组件要么是无状态的组件,要么是有状态的组件。无状态的组件使用起来...

  • 学习笔记(十八)Vuex状态管理

    Vuex状态管理 组件状态管理及组件间通信回顾 状态管理 状态集中管理和分发,解决多个组件共享状态的问题 状态自管...

  • 说说 Vue.js 中的 functional 函数化组件

    Vue.js 组件提供了一个 functional 开关,设置为 true 后,就可以让组件变为无状态、无实例的...

  • React 进阶二 组件详解

    React组件 React的组件大概分为俩部分,无状态组件和有状态组件 无状态组件。下面React官网中定义的一个...

  • react设计模式

    一. 有状态组件(stateful)与无状态组件(stateless) 有状态组件使用class声明,内部有sta...

  • 获取form,ref---antd

    无状态组件,获取form 无状态组件,获取ref 函数组件获取ref

网友评论

      本文标题:无状态组件

      本文链接:https://www.haomeiwen.com/subject/gecndrtx.html