数据进入材料表时如何调用UseEffect?

Posted

技术标签:

【中文标题】数据进入材料表时如何调用UseEffect?【英文标题】:How to call UseEffect when data comes into material table? 【发布时间】: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 所示。 【参考方案1】:

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

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

【讨论】:

他没有使用依赖,他的 useEffect 总是运行 这里的问题是我不能使用 ref.current 作为依赖,它不起作用。如果我使用数据作为依赖项,问题是在数据变量获取一些值之后,表仍然保持空几秒钟,所以我无法在我的函数中使用 ref.current.state.data,因为它仍然是空的。

以上是关于数据进入材料表时如何调用UseEffect?的主要内容,如果未能解决你的问题,请参考以下文章

useEffect 钩子完成后如何渲染组件?

ReactJS:如何只调用一次 useEffect 挂钩来获取 API 数据

如何阻止多个重新渲染执行多个 api 调用 useEffect?

如何使用 React Hooks 和 Context API 正确地将来自 useEffect 内部调用的多个端点的数据添加到状态对象?

如何在 React 中使用 useEffect 挂钩调用多个不同的 api

Axios 没有使用 useEffect() (React Js) [重复]