当React js中任何状态发生变化时,如何停止重新渲染子组件?

2023-11-23

我有一个父组件,在其中我包含了一个带有道具的子组件。 但是当父组件中的任何状态发生更改(与子组件无关)时,子组件将重新渲染。我不想重新渲染 每次状态更改时。我们可以停下来吗?

import React, { useState } from "react";
import ReactDOM from "react-dom";
import Child from "./child";
import "./styles.css";

function App() {
  const [any_state, setAnyState] = useState(false);

  const handleClick = () => {
    setAnyState(!any_state);
  };
  return (
    <div className="App">
      Parent Page ({any_state ? "true" : "false"})
      <br />
      <button onClick={handleClick}>Click me</button>
      <Child data={"any data"} />
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

child.js

import React from "react";

function Child(props) {
  console.log("child component");
  return <div className="App">child Page</div>;
}

export default Child;

https://codesandbox.io/s/clever-oskar-fpxm3?fontsize=14

我不希望在每次状态更改时在控制台中显示“子组件”。


你想使用React.memo为了这。阅读更多here.

这将防止在 props 没有改变时重新渲染。

代替export default Child; use export default React.memo(Child);在你的child.js.

import React from "react";

function Child(props) {
  console.log("child component");
  return <div className="App">child Page</div>;
}

export default React.memo(Child);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当React js中任何状态发生变化时,如何停止重新渲染子组件? 的相关文章

  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • Angular 2 链式 Promise 并传递拒绝

    应该是一个简单的问题 但是我找不到有关如何做到这一点的文档 像这样链接一个承诺 Making a promise no problem let promise new Promise resolve reject gt let data d
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 如何使用 JavaScript 中的值填充下拉列表?

    我在 Tridion CMS 扩展中的功能区工具栏按钮中添加了一个按钮 单击该按钮后 将显示一个弹出页面 其中包含两个下拉菜单 通过更改第一个下拉控件中的值 我应该填充第二个下拉控件的值 就我而言 我正在使用ASP drop down li
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • 在Javascript中按降序对字符串进行排序(最有效)?

    W3Schools 有这个例子 var fruits Banana Orange Apple Mango fruits sort fruits reverse 这是在 Javascript 中按降序对字符串进行排序的最有效方法吗 Updat
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • 如何在jquery中获取保存时间和当前时间的差异?

    我想在 javascript 或 jquery 中获取保存时间和当前时间之间的时差 我节省的时间看起来像Sun Oct 24 15 55 56 GMT 05 30 2010 java中的日期格式代码如下 String newDate 201
  • Select2 下拉列表动态添加、删除和刷新项目

    这让我发疯 为什么 Select2 不能在其页面上实现清晰的方法或示例如何在 Select2 上进行简单的 CRUD 操作 我有一个 select2 从 ajax 调用获取数据
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • Redux-saga 从操作中获取数据返回patternOrChannel 未定义

    我需要将动态数据从屏幕发送到操作 减速器 并使用该数据从 API 获取数据 但是当我在我的rootSaga我会收到这样的错误 在检查 take patternOrChannel 时未捕获 patternOrChannel 未定义未捕获在 r
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch

随机推荐

  • 什么时候const被认为是真正的const?

    在阅读 stackoverflow 中的一些问题和答案时 我遇到了这个question 我试图理解它 但答案真的很难理解 尤其是像这样的术语 静态存储时间 在翻译阶段无法评估表达式 etc 此外 我认为常数始终是常数 这是我在学校学到的 请
  • 在 CMakeLists.txt 中,我如何判断它是否与 add_subdirectory() 一起使用? [复制]

    这个问题在这里已经有答案了 我有这个代码项目可以独立构建 也可以作为较大存储库的子项目 将其检查为子存储库 在后一种情况下 我有一个顶级CMakeLists txt对于主要项目有 add subdirectory MY SUBPROJ SU
  • AngularJS 在按钮单击时显示预先输入

    我在 AngularJS 中使用 typeahead 指令 它工作得很好 但是 我希望在输入之外有一个按钮 单击该按钮会显示预输入下拉列表 这是我所追求的一个片段 li class input li
  • Visual Studio 2010:报表定义无效。详细信息:报告定义的目标无效

    回复 报告定义无效 详细信息 报告定义具有无效的目标命名空间 http schemas microsoft com sqlserver reporting 2008 01 reportdefinition 无法升级 需要报告专家 请继续 这
  • 在 python 中使用 pickle 和 for 循环从文件中读取

    我有一个文件 其中转储了大量列表 现在我想将此文件加载到内存中并使用其中的数据 我尝试使用 pickle 的 load 方法加载我的文件 但是 由于某种原因 它只给了我文件中的第一项 实际上我注意到它只将我的第一个列表加载到内存中 如果我想
  • 使用 RVM 安装 ruby​​-2.X 时遇到的问题

    我最近遇到了 ruby 2 0 0 p0 安装 成功安装 rvm 后 我在 bash 中键入以下命令 rvm install ruby 2 0 0 p0 这是结果日志 Searching for binary rubies this mig
  • 使用 MVC 将数据放入部分视图或布局中

    我想在布局和 或部分视图中显示有关登录用户的信息 用户名 公司名称 通知数量等 这些在每个页面上都很常见 是否有一个技巧可以将这些数据提供给他们 或者是否可以扩展每个模型以在其中包含这些信息 我建议您可以选择子操作并从布局中调用它 通过这种
  • 生成均匀随机排列

    我不确定以下伪代码是否可以生成uniformly random permutation PERMUTATE A n A length for i 1 to n swap A i and A random 1 n 好像是对的 但是谁能给我一个
  • 如果列值为“无”,则使用 slick 插入默认值

    我的问题很简单 我有一个专栏seqNum Double这是NOT NULL DEFAULT 1 in CREATE TABLE声明如下 CREATE TABLE some table seq num DECIMAL 18 10 NOT NU
  • 如何使用canvas HTML5绘制星星?

    我尝试使用画布绘制一颗星星 但代码未运行 我想了解 测量Y和X坐标的步骤是什么 如何找到他们 绘制任何形状
  • 使用 PHP 从 MySQL 添加天数到当前日期

    我有来自 MySql 的固定日期 startDate 07 03 2011 我想在此日期之上添加 60 天以获得结束日期 startDate result startDate endDate strtotime 60 days echo e
  • 在字符串中每 N 个字符添加分隔符?

    我有一个包含二进制数字的字符串 如何在每个 8 位数字之后分隔字符串 假设字符串是 string x 111111110000000011111111000000001111111100000000 我想在每个 8 个字符后添加一个分隔符
  • 无需小程序即可从网页访问客户端扫描仪

    我想在客户端访问扫描仪 在我使用java小程序之前没有问题 但是在chrome决定不支持java之后我该怎么办 如果有 JS Jquery 或其他语言的解决方案请告诉我 对于客户端 您需要使用动态网络 TWAIN 不幸的是 没有其他解决方案
  • 如何在散点图中制作 relim() 和 autoscale()

    下一个代码绘制了三个子图 from ipywidgets import widgets from IPython display import display import matplotlib pyplot as plt import n
  • 使用标准 Windows 命令行/批处理命令模拟 unix“cut”

    有没有办法在 Windows XP 上模拟 unix cut 命令 而无需借助 cygwin 或其他非标准 Windows 功能 示例 使用tasklist v 通过窗口标题查找特定任务 然后从该列表中提取PID 以传递给taskkill
  • D3.js 尝试实现可排序的 SVG 表

    正如我的标题所述 我正在尝试实现一个具有良好过渡的交互式表格 这就是我选择 D3 js 与 SVG 元素结合的原因 我设法用普通的 HTML 元素 th tr td 实现了一个可排序的表格 http jsfiddle net recek q
  • docker Desktop如何在Windows机器上运行Linux容器

    我已在 Windows 10 笔记本电脑上安装了 Docker for Windows 现在 由于这个 Docker for Windows 我也可以在我的 Windows 10 笔记本电脑上运行 Linux 容器 它是如何实现的 我有一些
  • 可以使用 jquery-ui 调整文本大小吗?

    p 标签中的 html 文本可以使用 jquery ui 调整大小 或者 div 标签中没有 p 标签也可以调整大小吗 我已经使用下面示例中的 jquery ui 调整了图像大小 但文本没有调整大小http jqueryui com dem
  • 从 Java 9 到 Java 8 的兼容性和迁移

    我正在读document关于新的 Java 9 模块系统 这段落3 兼容性和迁移解释如何迁移代码 从 Java 8 到 Java 9 但没有提及如何 迁移 或运行应用程序 使用 Java 9 编写到 Java 9 之前的运行时 所以 如果我
  • 当React js中任何状态发生变化时,如何停止重新渲染子组件?

    我有一个父组件 在其中我包含了一个带有道具的子组件 但是当父组件中的任何状态发生更改 与子组件无关 时 子组件将重新渲染 我不想重新渲染 每次状态更改时 我们可以停下来吗 import React useState from react i