【问题标题】:How to call UseEffect when data comes into material table?数据进入材料表时如何调用UseEffect?
【发布时间】:2020-05-09 07:39:41
【问题描述】:

我想在数据进入材料表时调用一个函数 (https://github.com/mbrn/material-table)。我试过用这个。

useEffect(() => {
        console.log(ref.current.state.data);
        //Do stuff
}); 

出于某种原因,仅当数据为空时才调用 useEffect。这意味着 ref.current.state.data 是一个空数组。

片刻之后,当数据进入材料表时,useEffect 没有被调用。数据更改不会触发 useEffect,这是为什么呢?或者这是一个我不了解 refs 的概念?

PS:材质表使用材质 UI。

【问题讨论】:

  • ref 不会触发重新渲染,因此不会调用您的 useEffect。
  • 引用更改不会触发重新渲染,如 codesandbox demo 所示。

标签: javascript jquery reactjs material-ui material-table


【解决方案1】:

您必须将数据声明为依赖项,因此每当它发生变化时,useEffect 就会触发。

useEffect(() => {
        console.log(ref.current.state.data);
        //Do stuff
}, [<your-data>]); 

【讨论】:

  • 他没有使用依赖,他的 useEffect 总是运行
  • 这里的问题是我不能使用 ref.current 作为依赖,它不起作用。如果我使用数据作为依赖项,问题是在数据变量获取一些值之后,表仍然保持空几秒钟,所以我无法在我的函数中使用 ref.current.state.data,因为它仍然是空的。
猜你喜欢
  • 2020-03-25
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
相关资源
最近更新 更多