簡體   English   中英

我如何將這個 function 從 app.js 中移出?

[英]How can i move this function out from app.js?

我打算從我的 app.js 中移出邏輯。 現在,在 app.js 中,我有一個 function 更改了 App.js 中一些變量的 state。 我想通過讓 app.js 調用另一個組件中的 function(例如單擊)來了解在 app.js 中更改 state 的正確方法是什么。

我的 app.js 如下所示:

const App = () => {
    const [opacity, opacitySet] = React.useState(1);
    const [showStep, setDisplayStep] = React.useState(true);
    const [isQrActive, setQrState] = React.useState(false);
    
/** code **/

  <ButtonContinue
    onClick={() => {
       stateChanger();
    }}
    style={{ backgroundColor: "black" }}
  >
    <p>cancel</p>
  </ButtonContinue>

/** lots of code **/

 function stateChanger() {  

   opacitySet(0);
     setTimeout(() => {

       opacitySet(1);
       setDisplayStep(!showStep);
       setQrState(!isQrActive);
     }, 400);

 }

/** and more code **/

}

我想將 stateChanger function 從 app.js 中移出,但仍保持相同的功能。 這反過來又使我可以輕松地從其他類調用 stateChanger。

最簡單的解決方案(也是最難擴展的)是將 function 作為 prop 傳遞給它的孩子。 您還可以創建自定義掛鈎。 但是通過在根級組件 App 上聲明 state 並詢問您通常如何從另一個組件修改它,我們可以解釋這個問題本質上是關於如何處理全局 state。您可能需要考慮使用 Context API 或Redux,它們是專門為此目的創建的工具。

這里要記住的最重要的事情是,如果我們可以選擇將 state 維護在合理接近它被使用和修改的地方,我們應該這樣做而不是將其作為全局 state 的一部分處理。

暫無
暫無

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

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