首页 > 其他分享 >React与Vue的区别

React与Vue的区别

时间:2022-12-12 17:46:22浏览次数:46  
标签:状态 Vue 函数 区别 React useState 组件

 

 

React

 当我们使用React开发的时候,我们就是在写React组件,组件的state即数据,组件的render方法返回的是视图,组件的声明周期钩子和事件的处理,是数据的变化逻辑。更准确地说是一颗组件树,根组件引用子组件,子组件可能还会引用子组件,形成组件树。组件树的结构和视图的盒子嵌套结构类似。

 将界面划分为组件、声明视图和数据的关系、实现数据的变化逻辑

 JSX是一个JavaScript的语法扩展

 生命周期:常见的生命周期钩子函数有componentDidMount、componentDidUpdate、componentwillUnmount

  为什么需要hook?

  为了让功能代码聚合在一起,增加了组件的可维护性。hook提供了功能逻辑代码复用的新方式。React需要提供一些额外的api实现,由于React推崇函数式组件的简洁和声明式编程的理念,hook给函数组件增加状态和逻辑。

  useState和useEffect

  usestate原理:让函数式组件拥有自己的状态,如何让函数式组件拥有自己的状态,有两个关键:1.状态存储在哪里?2.状态以什么格式存储

  状态存储在哪里?对于class组件可以直接挂载实例上面,函数式组件应该挂在虚拟DOM节点上,渲染过程中,调用函数组件时候React是知道在处理哪个节点的,因此当在函数式组件中调用useState方法,React就可以把创建的状态挂到相应的节点上面。在下一次调用函数组件时候,React发现已经有这个状态了,就把值返回。

  状态如何存储?类比class组件,把整个state作为一个对象存储,但是上面提到,这样存储不能达到分离功能逻辑的目的;因此我们希望可以将状态分开,每个状态有自己对应的key,例如const 【a,setA】= useState('a',’‘) 即对象存储状态,useState方法传递一个key和一个初始值,React把这个key和对应value存储到对象上。但是这样会比较冗余,React实现方式是只需要传递初始值,不用传递key,React根据useState调用顺序来识别是哪一个状态。函数式组件的状态就是一个数组格式,每个状态在函数式组件中调用useState声明的顺序,也是它们在状态数组中存储的顺序。

  •   函数式组件添加状态需要useState这个hook;在函数式组件中添加一些有副作用的操作,需要用到useEffect这个hook
  •   useState函数接收一个参数作为初始值;
  •   useState返回值为一个数组,数组第一个元素式状态变量,第二个元素是设置该状态的方法;
  •   调用设置状态的方法,会同步触发diff和更新操作
  1.   useEffect接收第一个参数是一个回调callback,会在特定时机执行
  2.   useEffect传入的callback,可以返回一个方法clearEffect,React会在组件卸载时候调用clearEffect,清除副作用
  3.   useEffect第二个参数是一个数组,数组中是依赖项,当依赖变化时候才会执行useEffect传入的方法
  4.   如果是空数组,则只在组件挂载时候执行,类似compontDidMount
  5.   如果第二个参数不传,则在组件更新时候执行

Vue

  vue是一款优秀的web应用开发框架,使用它让我们开发应用时更加高效。从用户角度,web应用要提供交互能力和信息展示。从开发者角度,web应用是一种利用网络浏览器和网络技术在互联网上执行任务和计算机程序。(前端开发者实现一个web应用需要用到创建和改变界面dom的能力来给用户呈现预期的界面、网络通信能力来控制和获取用户关心的数据)

比较

相同点:Virtual DOM、提供响应式和组件化的视图组件、将注意力集中在核心库,其他功能如路由和全局状态管理交给相关的库

不同点:

使用上:React的api简洁,Vue的Api更多,vue编写代码可能更少

    Vue更容易上手,React要实现相同功能需要用户操作,Vue的模板语法更贴近原生,因此更容易接收和理解

    模板语法和JSX 其实vue也支持JSX,JSX表达能力更强,模板语法更直观

    超大规模的首屏渲染上React有一些优势,因为Vue需要做一些初始化工作

    React组件是继承React.compont ,Vue是对象,因此React可以实现基于继承的组件复用,而Vue不行

原理上:Vue通过数据劫持,实现当数据变化时候响应式更新,React在setState时候diff组件树

 

 

标签:状态,Vue,函数,区别,React,useState,组件
From: https://www.cnblogs.com/baller-coder/p/16976726.html

相关文章

  • 《Spring Boot+Vue全栈开发实战》读书笔记
    写在前面嗯,回家处理一些事,所以离职了,之前的公司用开源技术封装了一套自己的低代码平台,所以之前学的springBoot之类的东西都忘了很多,蹭回家的闲暇时间复习下。笔记整体以Sp......
  • 组件嵌套以及VueComponent的讲解(代码实现)
    1、效果图分析2、先创建一个组件//第一步、创建city组件constcity=Vue.extend({template:`<divclass="cityDemo">......
  • SpringBoot+Vue实现第三方Gitee登录(二)
    1.准备工作_OAuth2(官网地址:开发流程)1.1 API使用条款  1.OSCHINA用户是资源的拥有者,需尊重和保护用户的权益。  2.不能在应用中使用OSCHINA的名称。  3.......
  • Vue 路由传参加密
    首先,创建一个base64.jsconstBase64={//加密encode(str){returnbtoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,function......
  • 轻量前后端分离简单网页版聊天(Spring Boot+WebSocket+Vue)Demo实现
    WebSocket是啥?在HTTP协议中,所有的请求都是由客户端发起的,由服务端进行响应,服务端无法向客户端推送消息,但是在一些需要即时通信的应用中,又不可避免地需要服务端向客户端推......
  • Vue.js 学习笔记
    我想要的,时间自然会给我。年龄也不会是我的阻碍,反而会是我的骄傲。:我不用在某个年龄段必须做某事,不要让任何人打乱自己的节奏。---------------------摘加油生活:我要努力呀......
  • react项目搭建
    目前react官网已经不建议下载create-react-app脚手架到本地的方式来搭建项目了,我们可以直接用npx的方式来快速搭建react项目。我本地用的node版本是18.xxx的,如果是低版本的......
  • How To Focus An Input In Vue?
    1-HowtoSetFocusonanInputinVue?Sometimesit’simportanttosetfocusoninput(programmaticallyorbydefault),itisoftenforaccessibility,and/or......
  • Vue3.0文档学习心得--响应式工具
    1.isRef:检查某个值是否为ref。返回值是true或者falseletfoo:unknown//返回值是一个类型判定 (typepredicate),这意味着 isRef 可以被用作类型守卫。if(isRe......
  • switch的一些思考(seitch与ifelse的区别....)
    Switch与If--else的比较switch...case与if...else的根本区别在于:switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的......