小编Tre*_*vor的帖子

尽管依赖项没有变化,但 useEffect 运行无限循环

我有使用钩子的函数组件。在useEffect钩子中,我只想从我的后端获取数据并将结果存储在 state 中。但是,尽管将数据变量添加为依赖项,但 useEffect 仍会在无限循环中触发 -即使数据没有更改。如何阻止 useEffect 连续触发?

我已经尝试了空数组 hack,它确实阻止了 useEffect 连续触发,但这不是所需的行为。例如,如果用户保存新数据,useEffect 应该再次触发以获取更新的数据 - 我不想模拟 componentDidMount。

const Invoices = () => {
  const [invoiceData, setInvoiceData] = useState([]);

  useEffect(() => {
    const updateInvoiceData = async () => {
      const results = await api.invoice.findData();
      setInvoiceData(results);
    };
    updateInvoiceData();
  }, [invoiceData]);

  return (
    <Table entries={invoiceData} />
  );
};
Run Code Online (Sandbox Code Playgroud)

我希望 useEffect 在初始渲染后触发,并且仅在 invoiceData 更改时再次触发。

reactjs react-hooks use-effect

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

react-hooks ×1

reactjs ×1

use-effect ×1