数据进入材料表时如何调用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?的主要内容,如果未能解决你的问题,请参考以下文章
ReactJS:如何只调用一次 useEffect 挂钩来获取 API 数据
如何阻止多个重新渲染执行多个 api 调用 useEffect?
如何使用 React Hooks 和 Context API 正确地将来自 useEffect 内部调用的多个端点的数据添加到状态对象?