vue转react useEffect的全过程

目录
  • vue转react useEffect
    • useEffect的第二个参数
    • useEffect的使用
    • useEffect清除
  • vue2转战React Hooks实践
    • 开发思路上
    • 代码组织结构上

vue转react useEffect

useEffect用于处理组件中的effect,通常用于请求数据,事件处理,订阅等相关操作。

useEffect的第二个参数

1.当useEffect没有第二个参数时

通过这个例子可以看到useEffect没有第二个参数时不停的在调用

2.当useEffect第二个参数为空数组时

通过这个例子可以看出来useEffect在调用一次后就不再调用

3.当useEffect第二个参数为变量时

通过这个例子可以看出来useEffect在每次count发生变化时调用

useEffect的使用

上面的例子可以看出来使用useEffect和和class component使用生命周期函数时的区别,使用useEffect将每次count变化的数据都打印出来,而使用componentDidUpdate打印了最后一个数据很多次,因为class component里面的state随着render是发生变化的,而useEffect里面的所有东西都是每次render独立的。

useEffect清除

useEffect通过return进行一些清除。

例如官方文档里面的例子,当props.friend.id发生变化时,可以进行清除工作

vue2转战React Hooks实践

从vue2转战到react16.12, 还是有好多差异的。总结起来:

开发思路上

vue是基于data的双向绑定,数据流在model(data)<=>view(template)中是双向流动关系。所以修改data, 绑定该data的视图会随之修改;修改view,data中的数据也会随之修改(当然,这种情况只针对于可输入类型的表单元素),然后再配合钩子函数created、mount、activated、deactivated、beforeDestroy(还有vue-router提供的beforeRouteLeave等)等在某个时刻自动触发一些业务逻辑。

react(16.8版本后,官方推荐react hooks开发方式)则是单向数据流动,通过useState声明变量,视图绑定state。类似钩子函数的工作,react使用useEffect来实现,通过不同的依赖项,实现不同的钩子函数作用。react开发上,就像堆积木,开发的所有东西都是组件,所以组件化更彻底;vue则是以page划分的,然后组件是引入到page中的。

代码组织结构上

vue是以.vue为模块组织代码的,一个.vue模块中包含template、script、style来分别实现视图、业务逻辑、样式的编写。

react是以.jsx为模块组织代码的,一个.jsx模块中template都是嵌入在script中的,style另外引入,更像是所有代码都是在函数中实现的。

import React, { useState, useEffect, useCallback } from 'react';
import style from './index.less';
import CardTest from '../components/CardTest/index';
import { getInfo } from '../../../api/api';
const CardTest = () => {
 const [info, setInfo] = useState({});
 useEffect(() => {
   requestData();
 }, []);
 // 请求数据
 const requestData = () => {
   const requestParm = "XXX";
   getInfo(requestParm)
     .then(res => {
       const { data = {} } = res;
       setInfo(data);
     })
     .catch(err => {});
 };
 return (
   <div className={style.wrap}>
     <div className="list">
       <CardTest  data={info} />
     </div>
   </div>
 );
};
export default CardTest;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • useEffect支持async及await使用方式

    目录 引言 背景 React 为什么要这么做? useEffect 怎么支持 async...await... 自定义 hooks 还可以支持 useEffect 的清除机制么? 总结与思考 引言 本文是深入浅出 ahooks 源码系列文章的第六篇,这个系列的目标主要有以下几点: 加深对 React hooks 的理解. 学习如何抽象自定义 hooks.构建属于自己的 React hooks 工具库. 培养阅读学习源码的习惯,工具库是一个对源码阅读不错的选择. 注:本系列对 ahooks 的源码

  • React useEffect不支持async function示例分析

    目录 引言 React为什么这么设计呢? 简单改造 1.简单改造的写法(不推荐) 2.把异步提取成单独函数或自定义hook(推荐) 引言 useEffect相比大家都耳熟能详啦,如下这种写法,应该是非常常见的需求. useEffect(async () => { await getPoiInfo(); // 请求数据 }, []); 但是 React 本身并不支持这么做,理由是 effect function 应该返回一个销毁函数(effect:是指return返回的cleanup函数),如果

  • useEffect理解React、Vue设计理念的不同

    目录 引言 Vue与React的差异 useEffect会越来越复杂 总结 引言 我们知道,React发布Hooks后,带来了业界一波Hooks热.很多框架(比如Vue Composition API.Solid.js)都借鉴了Hooks的模式. 但是,即使这些框架都借鉴了Hooks,但由于框架作者的理念不同,发展方向也逐渐不同. 比如,在Vue Composition API中,对标React useEffect API的是watchEffect,在Vue文档中,有一小段内容介绍他的用法: 而

  • useEffect中不能使用async原理详解

    目录 当我们尝试在 useEffect 使用 async 的时候会报错,但是一直没有了解为什么,最近在看源码,尝试从源码角度解释报错的原因,下面是具体的代码分析. 当页面中使用 useEffect 的时候,会在初始化的时候执行 mountEffect 如下: useEffect: function(create, deps) { currentHookNameInDev = "useEffect"; mountHookTypesDev(); checkDepsAreArrayDev(d

  • vue转react useEffect的全过程

    目录 vue转react useEffect useEffect的第二个参数 useEffect的使用 useEffect清除 vue2转战React Hooks实践 开发思路上 代码组织结构上 vue转react useEffect useEffect用于处理组件中的effect,通常用于请求数据,事件处理,订阅等相关操作. useEffect的第二个参数 1.当useEffect没有第二个参数时 通过这个例子可以看到useEffect没有第二个参数时不停的在调用 2.当useEffect第二

  • vue与react详细

    目录 一.全景图 二.背景 1.react:专业 2.vue:传奇 三.技术思想 1.key的异同为例 1.1 react 1.2 vue 2.diff的宏观比较 2.1 react 2.2 vue 3.生命周期 3.1 react 生命周期 3.2 vue生命周期 4.函数式编程 4.1 react hooks 4.2 vue3 组合式api 5.事件处理(@Click vs onClick) 5.1 vue 5.2 react 6.组件化 7.构建工具 8.其他 五.全家桶 一.全景图 二.

  • 前端项目中的Vue、React错误监听

    目录 一. Vue 错误监听 window.onerror errorCaptured 生命周期 errorHandler 异步错误 答案 扩展 二.React 错误监听 ErrorBoundary dev 和 build 事件报错 异步错误 答案 扩展 一. Vue 错误监听 题目: 如何统一监听 Vue 组件报错? 分析: 真实项目需要闭环,即考虑各个方面,除了基本的功能外,还要考虑性能优化.报错.统计等. 而个人项目.课程项目一般以实现功能为主,不会考虑这么全面.所以,没有实际工作经验的同

  • vue和react中关于插槽详解

    目录 简述Slot 基本插槽 vue基本插槽 react基本插槽 具名插槽 vue具名插槽 react具名插槽的讨论 模仿具名插槽 属性插槽 插槽传参 vue插槽传参 react:render-props 简述Slot slot插槽是Vue对组件嵌套这种扩展机制的称谓,在react可以也这样称呼,但是并不很常见.不过叫slot确实很形象. 这样的形式就是slot插槽: vue <template> <container-comp> <content></conte

  • React useEffect使用教程

    目录 一.每一次渲染都有它自己的 Props and State 二.每次渲染都有它自己的Effects 三.关于依赖项不要对React撒谎 四.两种诚实告知依赖的方法 五.来自useReducer的助攻 六.把函数移到Effects里 七.我不想把可复用的函数放到Effect里 这篇文章会假设你对useEffectAPI有一定程度的了解. 一.每一次渲染都有它自己的 Props and State 在我们讨论 effects 之前,我们需要先讨论一下渲染,当我们更新 state 的时候,Rea

  • 干货!教大家如何选择Vue和React

    两者之间的相同之处 同样是基于组件开发的轻量级框架,同样是专注于用户界面的视图view层. 如何选择 1.1 如果喜欢用模板搭建应用(或者有这个想法)选择Vue Vue应用默认的是把markup放在HTML中,数据绑定表达式和Angular一样,采用{{}}的形式,而指令(特殊的HTML属性)用来向模板中添加功能 <div> <p>{{ message }}</p> <button v-on:click="reverseMessage">

  • vue和react等项目中更简单的实现展开收起更多等效果示例

    前言 本文题目中虽然写有vue和react,但是并非vue和react相关知识,而是最基本的html5和css3的一些知识,之所以写vue,是因为我最近项目中用到了类似效果,我用vue相关知识实现并不雅观,用html5和css3实现,则更加完美. 项目案例 项目中有如下效果: 好多展开收起,对于这个的实现,我一开始用了vue一些比较挫的dom操作,就是父元素toggleClass一个类名,进行子元素的显示和隐藏. 由于这个方法是通用方法,项目中好多地方使用,代码大概如下: toggleShow(

  • 基于vue、react实现倒计时效果

    本文实例为大家分享了基于vue.react实现倒计时效果的具体代码,供大家参考,具体内容如下 Vue 方案一:俩个元素 HTML: <div id="example"> <button @click="send"> <span v-if="sendMsgDisabled">{{time+'秒后获取'}}</span> <span v-if="!sendMsgDisabled"

  • 基于vue和react的spa进行按需加载的实现方法

    基于vue和react的spa进行按需加载 由于最近打算将所有的管理系统采用同一套登陆方法,然后在登陆后进行系统的切换选择,不需要每个系统都去重新登陆一次,所以前端这边思考将所有的系统用一套spa的应用进行构建,但是各个系统的合并之后,打包后的代码应该是相当大的,单页需要一次性加载所有系统的资源,显得不合实际,所以打算将不同系统的资源进行分离,再选择后在加载该系统的相应资源.自己发现这个业务和每个系统的路由比较类似,因此将系统的配置基于vue-router或者react-router的基础进行按

  • vue、react等单页面项目部署到服务器的方法及vue和react的区别

    最近好多伙伴说,我用vue做的项目本地是可以的,但部署到服务器遇到好多问题:资源找不到,直接访问index.html页面空白,刷新当前路由404...用react做的项目也同样遇到类似问题.现在我们一起讨论下单页面如何部署到服务器? 由于前端路由缘故,单页面应用应该放到nginx或者apache.tomcat等web代理服务器中,千万不要直接访问index.html,同时要根据自己服务器的项目路径更改react或vue的路由地址. 如果说项目是直接跟在域名后面的,比如:http://www.so

随机推荐