如果你希望在p2变化时重新渲染组件,但是p1不变化时不重新渲染组件,你可以使用React.memo来包装你的组件,并且指定一个自定义的比较函数来比较p2的变化。

以下是一个示例代码:

import React from 'react';

const Page = React.memo(({ p1, p2 }) => {
  // 这里是组件的渲染逻辑
  return (
    <div>
      <h1>p1: {p1}</h1>
      <h1>p2: {p2}</h1>
    </div>
  );
}, (prevProps, nextProps) => {
  // 自定义比较函数,只有 p2 变化时才重新渲染组件
  return prevProps.p2 === nextProps.p2;
});

export default Page;

在上面的代码中,我们使用了React.memo来包装Page组件,并且传入了一个自定义的比较函数。比较函数接收两个参数,prevProps表示之前的属性,nextProps表示新的属性。在比较函数中,我们只关心p2的变化,如果p2相等,则返回true,表示props没有变化,不需要重新渲染组件。

这样,当p1不变而p2变化时,Page组件就不会重新渲染,只有当p2变化时,Page组件才会重新渲染

reactjs v18 router v6 URL 为 teamp1tasksp2用的同一个Pagejsx 当p2变化时p1并没有变化但是使用p1作为props的memo后的组件并没有成功

原文地址: https://www.cveoy.top/t/topic/iBgi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录