浅谈react 16.8版本新特性以及对react开发的影响

 更新时间:2022年03月15日 08:33:05   作者:Lewyon  
本文主要介绍了react 16.8版本新特性以及对react开发的影响,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Facebook团队对社区上的MVC框架都不太满意的情况下,开发了一套开源的前端框架react,于2013年发布第一个版本。

react最开始倡导函数式编程,使用function以及内部方法React.creactClass创建组件,之后在ES6推出之后,使用类组件Class构建包含生命周期的组件。

react 16.8版本更新

react16.8版本更新标志性的信息,是引入了hooks以及相关的一些api。

useState:

// 函数式组件初始化state和更改state:

const Counter = () =>{
const [num,setNum] = userState(0);
return(
  <div>
      <div>{count}</div>
       <button onClick={()=>setCount(num+ 1)}>+</button>
  </div>
  );
};

useEffect

userEffect副作用函数的组件,不仅取代了组件初始化,组件挂载成功,组件状态更新这三个阶段的生命周期函数

同时还能在这个阶段处理一些内存队列:包括定时器等,解决了在16.8版本之前,在组件移除之后,异步队列没有被移除,占据内存导致页面卡顿等问题

useEffect(() => {
  compoment.subscribe(id);
  return () => {
      compoment.unsubscribe(theId)    //取消订阅
  }
});

react16.8版本更新解决了什么问题

组件复用更便捷

在更新的版本之前,复用组件,更多的是使用高阶组件,以及封装的组件,通过传参和父子组件通信的形式去复用,

更新之后,可以通过函数式组件返回状态的形式,去接受组件向外暴露的组件内容。

实例

//旧版本
function children() {
  return function (WrappedComponent) {
    return class HighComponent extends React.Component {
      state = {
        childProps: xxx
      };
      render() {
        const { childProps } = this.state;
        return <WrappedComponent childProps={childProps} />;
      }
    };
  };
}
class App extends Component{
  render(){
/**
 * 调用高阶组件
 */
    const { childProps} = this.props;
    return (
      <children
        columns={[...]}
      // tableProps包含pagination, onChange, dataSource等属性。
        {...childProps}
      />
    )
  }
}
// 新版本
function children() {
  const [childProps, setChildProps] = useState(xxx);
  return childProps;
}

function App {
    const { childProps} = useTable();
    return (
      <Table 
        columns={[...]}
      // tableProps包含pagination, onChange, dataSource等属性
        {...childProps}
      />
    )
}
  • 在我们上面提到的,清除定时器,以及解决在生命周期变化过程中,消除占用内存的队列等
  • 函数式组件出现了状态管理,在以往的react函数式编程过程中,react只能被动去接收一个从父组件传递下来的一个props状态,在hooks更新之后,可以使用hooks更新的方法,提高组件的功能性以及扩展性,在函数式组件当中拥有了像class组件一样可控生命周期
  • useEffect取代了一部分生命周期函数,从代码量的角度来说,简化了代码,解决了在class组件在编写过程中,需要不断使用bind或者箭头函数去绑定当前的this,更专注于当前状态的管理

hooks和react diff算法

  • react diff这里不做深入讲解,简单来说diff算法是react以及vue2.0版本当中:

内部有一套虚拟dom的算法,在组件渲染过程中,对每个dom渲染一个key值,

在state状态更新过程时,对应渲染的虚拟dom会去对比真实渲染在页面上的dom元素,如果某个节点对比时发现有更改,对应更改当前虚拟dom节点的数据状态,再渲染真实的dom到页面当中。

两者的联系:

  • hooks在更新之后,减少了对生命周期函数的执行,同时更新状态更为迅速,这样在虚拟dom执行过程中,提高diff执行速度

  • hooks使得函数式组件有了自己内部的状态,在函数式组件执行过程中,不需要等待装载到父组件当中,自己可以更新状态,所以减少了部分dom的深度,在页面渲染过程中,也算是变相提高了页面渲染速度。

总结

hooks在出现之后,对react前端开发来说,标志性的特点应该是解决了类似定时器队列占据内存的问题,简化了react生命周期和组件代码,追溯数据流向和状态修改更为清晰。

在16.8版本之后的小版本更是出现了自定义hooks,还有usememo等api,

包含vue3.0新的api,这些版本的更新都在帮助前端开发者不用再花更多的时间去研究生命周期执行和运行的过程,去专注页面上状态的改变,快速和稳健开发前端业务。

到此这篇关于浅谈react 16.8版本新特性以及对react开发的影响的文章就介绍到这了,更多相关react 16.8新特性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React实现复杂搜索表单的展开收起功能

    React实现复杂搜索表单的展开收起功能

    本节对于需要展开收起效果的查询表单进行概述,主要涉及前端样式知识。对React实现复杂搜索表单的展开-收起功能感兴趣的朋友一起看看吧
    2021-09-09
  • React-Native 桥接iOS原生开发详解

    React-Native 桥接iOS原生开发详解

    本篇文章主要介绍了React-Native 桥接iOS原生开发详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • react MPA 多页配置详解

    react MPA 多页配置详解

    这篇文章主要介绍了react MPA 多页配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • create-react-app开发常用配置教程

    create-react-app开发常用配置教程

    这篇文章主要为大家介绍了create-react-app开发常用配置教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • React Fiber构建beginWork源码解析

    React Fiber构建beginWork源码解析

    这篇文章主要为大家介绍了React Fiber构建beginWork源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • react-beautiful-dnd 实现组件拖拽功能

    react-beautiful-dnd 实现组件拖拽功能

    这篇文章主要介绍了react-beautiful-dnd 实现组件拖拽功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • ReactNative页面跳转Navigator实现的示例代码

    ReactNative页面跳转Navigator实现的示例代码

    本篇文章主要介绍了ReactNative页面跳转Navigator实现的示例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • react中的双向绑定你真的了解吗

    react中的双向绑定你真的了解吗

    这篇文章主要为大家详细介绍了react中的双向绑定,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • react-native 实现购物车滑动删除效果的示例代码

    react-native 实现购物车滑动删除效果的示例代码

    这篇文章主要介绍了react-native 实现购物车滑动删除效果的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Vite+React搭建开发构建环境实践记录

    Vite+React搭建开发构建环境实践记录

    这篇文章主要介绍了Vite+React搭建开发构建环境实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09

最新评论