美文网首页
React 创建无状态组件(stateless-componen

React 创建无状态组件(stateless-componen

作者: 罗坤_23333 | 来源:发表于2018-11-05 22:40 被阅读0次

无状态函数组件

创建无状态函数式组件形式是从React 0.14版本开始出现的。它是为了创建纯展示组件,这种组件只负责根据传入的props来展示,不涉及到要state状态的操作。具体的无状态函数式组件,其官方指出:

在大部分React代码中,大多数组件被写成无状态的组件,通过简单组合可以构建成其他的组件等;这种通过多个简单然后合并成一个大应用的设计模式被提倡。

无状态函数式组件形式上表现为一个只带有一个render方法的组件类,通过函数形式或者ES6 arrow function的形式在创建,并且该组件是无state状态的。具体的创建形式如下:

ES5 纯函数

function HelloComponent(props) {
    return <div>Hello,{props.name}</div>
}
ReactDOM.render(<HelloComponent name={"Word"}/>, document.getElementById('root'));

箭头函数

const HelloComponent= props => (
    <div>Hello {props.name}</div>
)

无状态组件的创建形式使代码的可读性更好,并且减少了大量冗余的代码,精简至只有一个render方法,大大的增强了编写一个组件的便利,除此之外无状态组件还有以下几个显著的特点:
1.组件不会被实例化,整体渲染性能得到提升
因为组件被精简成一个render方法的函数来实现的,由于是无状态组件,所以无状态组件就不会在有组件实例化的过程,无实例化过程也就不需要分配多余的内存,从而性能得到一定的提升。
2.组件不能访问this对象
无状态组件由于没有实例化过程,所以无法访问组件this中的对象,例如:this.ref、this.state等均不能访问。若想访问就不能使用这种形式来创建组件
3.组件无法访问生命周期的方法
因为无状态组件是不需要组件生命周期管理和状态管理,所以底层实现这种形式的组件时是不会实现组件的生命周期方法。所以无状态组件是不能参与组件的各个生命周期管理的。
4.无状态组件只能访问输入的props,同样的props会得到同样的渲染结果,不会有副作用
无状态组件被鼓励在大型项目中尽可能以简单的写法来分割原本庞大的组件,未来React也会这种面向无状态组件在譬如无意义的检查和内存分配领域进行一系列优化,所以只要有可能,尽量使用无状态组件[1]

React.memo()防止渲染[2]

const HelloComponent= props => (
    <div>Hello {props.name}</div>
)
export default React.memo(HelloComponent)

仍可使用ref功能[3]

无状态组件内部其实是可以使用ref功能的,虽然不能通过this.refs访问到,但是可以通过将ref内容保存到无状态组件内部的一个本地变量中获取到。[1]

function CustomTextInput(props) {
  // textInput must be declared here so the ref callback can refer to it
  let textInput = null;

  function handleClick() {
    textInput.focus();
  }

  return (
    <div>
      <input
        type="text"
        ref={(input) => { textInput = input; }} />
      <input
        type="button"
        value="Focus the text input"
        onClick={handleClick}
      />
    </div>
  );  
}

参考

相关文章

  • React 创建无状态组件(stateless-componen

    无状态函数组件 创建无状态函数式组件形式是从React 0.14版本开始出现的。它是为了创建纯展示组件,这种组件只...

  • React学习笔记_02

    React 组件和状态 react 组件 1,组件的两种创建方式1,函数组件2,类组件 1,函数组件:使用 JS ...

  • 《React精髓》实践笔记 - Chapter 3

    创建一个无状态的组件 创建组件就是三个步骤 调用React.createClass()创建一个组件类ReactCl...

  • 如何创建React组件并发布到npm?

    实现步骤: 创建React组件项目; 创建测试项目并引用组件; 发布React组件到npm上; 一、创建React...

  • React 生命周期

    函数式组件肯定是无状态组件,类组件可以是无状态组件也可以是有状态组件 生命周期:即react实例从创建到销毁的执行...

  • React 生命周期

    函数式组件肯定是无状态组件,类组件可以是无状态组件也可以是有状态组件 生命周期:即react实例从创建到销毁的执行...

  • React 进阶二 组件详解

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

  • React创建组件的三种方式

    React常见的三种组件创建方式,具体如下: 1.函数式定义的无状态组件 2.es5原生方式React.creat...

  • React创建组件的几种方式与优缺点

    React有三种创建组件的方式: 一、无状态函数式组件:无状态函数式组件表现为只带一个render方法的组件。 特...

  • 第三章 《开发真正可复用的组件》

    1、创建类 共有工厂方法、继承React类和无状态函数式组件三种方式来创建组件。 createClass工厂方法:...

网友评论

      本文标题:React 创建无状态组件(stateless-componen

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