簡體   English   中英

如何使用詳盡的 deps lint 規則執行掛載/卸載效果

[英]How to do mount/unmount effects with exhaustive-deps lint rule

我無法理解如何使用react-hooks/exhaustive-deps lint 規則在我的應用程序中執行與componentDidMountcomponentWillUnmount等效的操作。 例如在加載一個組件時,我想加載一些數據並在完成后清理它。 所以我可能會按照這些思路寫一些東西。

React.useEffect(() => {
  loadDataById(id, other, properties);
  return () => {
    resetDataById(id);
  };
}, []);

現在的問題是我們已經包含了 react-hooks lint 規則。 這表明我需要在此示例中的依賴項列表中包含idotherproperties 但是如果我這樣做,當otherproperties更改時,將調用loadDataByIdresetDataById方法,但我希望在加載/卸載組件時使用這些方法。 我已經回過頭來僅在這些特定行上禁用該 lint 規則,但這似乎是我們應用程序中相當常見的東西的反模式。

如果您認為您的鈎子應該只運行一次且僅運行一次,即使依賴項發生變化。 您始終可以使用注釋指令忽略該 eslint 規則,如下所示:

React.useEffect(() => {
  loadDataById(id, other, properties);
  return () => {
    resetDataById(id);
  };
  // eslint-disable-next-line react-hooks/exhaustive-deps
}, []);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM