首页 > 其他分享 >React函数式组件避免无用渲染的方案

React函数式组件避免无用渲染的方案

时间:2024-01-03 16:33:42浏览次数:22  
标签:const 函数 渲染 value React values 组件

在class组件中可以使用shouldComponentUpdate钩子函数,但是函数式组件中是没有这种钩子函数的,那么在函数式组件中来达到类似的效果呢?
答案是:React.Memo,如以下使用案例:

// 父组件
const [values, setValues] = useState({
    a: 1,
    b: 1,
  });
  function increment() {
    setValues({
      ...values,
      a: values.a + 1,
    });
  }
<Button onClick={increment}>增加</Button>
 <NextComponent value={values.a} />
 
 
 
// 子组件
import React from "react";
interface Props {
  value: number;
}

const NextComponent: React.FC<Props> = (props) => {
  console.log("rerender");
  return <div>{props.value > 5 ? "大于五" : "小于五"}</div>;
};

const MemoNextComponent = React.memo(
  NextComponent,
  (prevProps: Readonly<Props>, nextProps: Readonly<Props>) => {
    const prev = prevProps.value - 5 > 0;
    const next = nextProps.value - 5 > 0;
    return prev == next;
  },
);

export default MemoNextComponent;

通过React.Memo提供的第二个参数,来判断是否不需要更新,如果true,则直接跳过组件更新,反之则重新渲染组件。

标签:const,函数,渲染,value,React,values,组件
From: https://www.cnblogs.com/alone4436/p/17943478

相关文章

  • 【Qt之Quick模块】7. Quick基础、常用组件Item、Rectangle、Text、TextInput、TextEdi
    1.概述QtQuick模块是编写QML应用程序的标准库。QtQML模块提供QML引擎和语言基础结构,QtQuick模块提供用QML创建用户界面所需的所有基本类型。它提供了一个可视化画布,包括用于创建和动画化可视化组件、接收用户输入、创建数据模型和视图以及延迟对象实例化的类型。QtQuick模块......
  • Vue开发者必备!手把手教你实现类似Element Plus的全局提示组件!
    前言在Web开发中,用户体验至关重要。有效的信息提示和错误消息对于确保用户更好地理解和操作至关重要。在这个背景下,全局弹框提示组件成为了一个非常有用的工具。Vue.js,作为当前最受欢迎的前端框架之一,为创建灵活、可复用的弹框组件提供了强大的支持。本文将介绍一个简单而强大的全......
  • uniapp 新建组件
    1.新建文件夹components文件夹名称必须是components,否则组件无法自动导入2.新建组件3.编辑组件components/logo/logo.vue<template> <imgsrc="https://img.alicdn.com/imgextra/i1/O1CN01EI93PS1xWbnJ87dXX_!!6000000006451-2-tps-150-150.png"/></template>4.使用组件......
  • VUE框架Vue3下使用watch监听reactive下的数据变化并使深度监视起效------VUE框架
    <template><h1>{{data.counter}}</h1><button@click="data.counter++">按一下加一</button><h1>{{data.a.b.c.d.counter1}}</h1><button@click="data.a.b.c.d.counter1++">按一下加一&l......
  • 安卓中ViewPager组件的使用场景与优劣分析
    一、文章摘要在Android应用开发中,ViewPager是一个非常重要的UI组件,它允许用户通过左右滑动的方式切换不同的页面视图。同时,ViewPager在Android开发中是一种常用的视图容器,主要用于在应用程序中实现滑动视图的效果。它通常用于分页展示内容,如图片轮播、标签切换等。本文......
  • vue3的ref、reactive、toRef、toRefs
    用处:用于在setup中创建响应式变量导出:import{ref,reactive,toRef,toRefs}from'vue'区别:ref用来定义基础数据类型,String,Number,Boolean,Symbol;通过Object.defineProperty()的get和set来实现响应式;js操作数据需要.value,模版中读取不需要.valuereactive用来定义......
  • React 类组件转换为函数式
    函数式的React组件更加现代,并支持有用的hooks,现在流行把旧式的类组件转换为函数式组件。这篇文章总结了转换的一些通用的步骤和陷阱。通用替换定义从class(\w+)extendsComponent\{改为const$1:FC=()=>{这是没有export和props的场景从(export)defau......
  • 关于vue里面使用markdown插入视频前台渲染导致<video>等标签被转义成字符,导致视频加载
    markdown中插入视频前台渲染出来导致<video>等标签被转义成字符解决办法:如图:在markdown里面插入视频,可以按照下面写法,哈哈,虽然很捞,但是还是可以满足的。<videosrc="https://xxxxxxxxxxxxxx.mp4"controls="true"style="max-width:100%;height:auto;"></video> ......
  • 在 Django 中使用 Vue.js 组件的步骤如下³⁴: 1. **安装 Vue.js**:首先,你需要在你的开
    在Django中使用Vue.js组件的步骤如下³⁴:1.**安装Vue.js**:首先,你需要在你的开发环境中安装Vue.js³。2.**创建Vue组件**:在Vue.js中,你可以创建一个新的Vue组件。例如,你可以在`src/components`文件夹下新建一个名为`Home.vue`的组件¹。3.**在Django模板中引......
  • 【vue】,封装的table组件,table表格超出高度自适应滚动效果,设置页面全局统一自适应高度
    需求背景:为了使后台页面的table列表页面始终保持统一的高度,无论我们的列表数据有多少都只占一个屏幕的高度,如果table表格的数据太多,只滚动table表格的数据,页面高度保持不变;使用window.onresize监听浏览器的高度://tableHeight:为el-table绑定的height高度;onMounted......