当父状态在React中更改时停止渲染子组件

贝克尔

我有一个React组件Activity,带有一个DataTable和一个Drawer(来自Material UI)。我根据isDrawerOpen活动组件的状态属性设置是否打开抽屉但是,isDrawerOpen更新后,Activity,Drawer和DataTable都将重新呈现。

我不想DataTable投降,因为什么都没有改变。我尝试使用,React.memo并且尝试useEffectuseRefDataTable功能组件中结合使用,以在道具相同时不重新呈现。没用 当其所有道具都没有变化时,如何防止该子组件重新呈现?

const Activity = props => {
   const [isDrawerOpen, setIsDrawerOpen] = useState(false);
   const [tableData, setTableData] = useState(["banana", "orange", "apple"]);

   return (
      <div>
        <DataTable data={tableData} onRowClick={() => setIsDrawerOpen(true) } />
        <Drawer open={isDrawerOpen}>Some Drawer Content </Drawer>
      </div>
   )
}
罗斯·艾伦

实际情况正在发生变化...它正在为的每个渲染上构造一个新函数,onRowClick由于它获得了新的道具,因此迫使孩子重新渲染。这是useCallback钩子的作用:

const Activity = props => {
   const [isDrawerOpen, setIsDrawerOpen] = useState(false);
   const [tableData, setTableData] = useState(["banana", "orange", "apple"]);

   // Because `setIsDrawerOpen` never changes across renders, it's safe to
   // pass an empty deps array as the second argument.
   const onRowClick = useCallback(() => setIsDrawerOpen(true), []);

   return (
      <div>
        <DataTable data={tableData} onRowClick={onRowClick} />
        <Drawer open={isDrawerOpen}>Some Drawer Content </Drawer>
      </div>
   );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React:子组件未在父状态更改时呈现

来自分类Dev

当父组件状态更改时,React路由组件会重新渲染

来自分类Dev

在React中重新渲染子组件或更改子状态

来自分类Dev

当RN 0.61中的状态更改时,如何从主组件中重新渲染子组件?

来自分类Dev

从React中的子组件更改父状态(无Redux)

来自分类Dev

React-redux:无法在父状态更改时触发子组件操作

来自分类Dev

父状态更改时子组件不会更新

来自分类Dev

react native:如何在状态更改时停止子组件的重新呈现?

来自分类Dev

当提供程序组件的父状态更改时,为什么不能更新子组件中的值(带有react上下文)?

来自分类Dev

更改 reactJs 父组件中的状态不会更改 react 子组件中的道具

来自分类Dev

数组属性更改时,React子组件不会重新渲染

来自分类Dev

当父状态更改时,React不呈现子级

来自分类Dev

反应组件不会在父组件 firebase 的状态更改时重新渲染

来自分类Dev

当父状态改变时,如何更新(重新渲染)React中的子组件?

来自分类Dev

单击带有React JS中特定键的子组件时更改父组件的状态

来自分类Dev

由于父级重新渲染,ReactJS计算组件道具更改时的状态

来自分类Dev

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

来自分类Dev

在重新渲染父组件时,React如何重用子组件/保持子组件的状态?

来自分类Dev

反应:如何在某些特定状态更改时停止重新渲染组件?

来自分类Dev

状态更改时,React不会重新渲染

来自分类Dev

根据子组件中父组件状态的更改,在父组件上执行代码

来自分类Dev

当Redux状态更改时,React-Redux渲染组件在屏幕上出现两次

来自分类Dev

React Native:基于Array.map()的渲染组件不会在状态更改时更新

来自分类Dev

当Redux状态更改时,React-Redux渲染组件在屏幕上出现两次

来自分类Dev

React 组件不会使用 setState 在状态更改时重新渲染

来自分类Dev

从子组件更改父组件中的状态,然后将该状态作为属性传递,并在子组件中更改状态

来自分类Dev

在 React 的父组件中访问子状态值

来自分类Dev

尝试从子组件React Hooks更改父级中的状态

来自分类Dev

在 Meteor+React 中,如何在父 React 组件中渲染子 React 组件?

Related 相关文章

  1. 1

    React:子组件未在父状态更改时呈现

  2. 2

    当父组件状态更改时,React路由组件会重新渲染

  3. 3

    在React中重新渲染子组件或更改子状态

  4. 4

    当RN 0.61中的状态更改时,如何从主组件中重新渲染子组件?

  5. 5

    从React中的子组件更改父状态(无Redux)

  6. 6

    React-redux:无法在父状态更改时触发子组件操作

  7. 7

    父状态更改时子组件不会更新

  8. 8

    react native:如何在状态更改时停止子组件的重新呈现?

  9. 9

    当提供程序组件的父状态更改时,为什么不能更新子组件中的值(带有react上下文)?

  10. 10

    更改 reactJs 父组件中的状态不会更改 react 子组件中的道具

  11. 11

    数组属性更改时,React子组件不会重新渲染

  12. 12

    当父状态更改时,React不呈现子级

  13. 13

    反应组件不会在父组件 firebase 的状态更改时重新渲染

  14. 14

    当父状态改变时,如何更新(重新渲染)React中的子组件?

  15. 15

    单击带有React JS中特定键的子组件时更改父组件的状态

  16. 16

    由于父级重新渲染,ReactJS计算组件道具更改时的状态

  17. 17

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

  18. 18

    在重新渲染父组件时,React如何重用子组件/保持子组件的状态?

  19. 19

    反应:如何在某些特定状态更改时停止重新渲染组件?

  20. 20

    状态更改时,React不会重新渲染

  21. 21

    根据子组件中父组件状态的更改,在父组件上执行代码

  22. 22

    当Redux状态更改时,React-Redux渲染组件在屏幕上出现两次

  23. 23

    React Native:基于Array.map()的渲染组件不会在状态更改时更新

  24. 24

    当Redux状态更改时,React-Redux渲染组件在屏幕上出现两次

  25. 25

    React 组件不会使用 setState 在状态更改时重新渲染

  26. 26

    从子组件更改父组件中的状态,然后将该状态作为属性传递,并在子组件中更改状态

  27. 27

    在 React 的父组件中访问子状态值

  28. 28

    尝试从子组件React Hooks更改父级中的状态

  29. 29

    在 Meteor+React 中,如何在父 React 组件中渲染子 React 组件?

热门标签

归档