簡體   English   中英

嘗試清除/清空/刪除/設置回初始 state 時,React setState 掛鈎不起作用

[英]React setState hook is not working when trying to clear/empty/delete/set back to initial state

我有一個clearState function 當單擊重新啟動按鈕時,它將一些 useState 掛鈎設置回其初始 state。 但是,他們說我的 setState 不是 function。 請檢查以下代碼:

應用程序.js

...
const [question, setQuestion] = useState(0);
const [response, setResponse] = useState({});
const [answer, setAnswer] = useState({});
const [answerId, setAnswerId] = useState({});
...

模態.js

const Modal = ({
  setResponse,
  setAnswer,
  setAnswerId,
  setQuestion,
  setAnswerNameArr,
}) => {
  const [open, setOpen] = useState(false);

  const clearState = () => {
    setOpen(false); //works
    setQuestion(0); //works
    setAnswer({}); //does not work
    setAnswerId({});
    setResponse({});
    setAnswerNameArr([]);
  };

...

  return (
    <Modal
       ...
    >
      ...
        <Button
           onClick={()=>handleSubmit()}
        >
           Restart
        </Button>
    </Modal>
  );
};

export default Modal;

錯誤:

Uncaught TypeError: setAnswer is not a function

提前致謝。

看起來您沒有將 state 設置掛鈎傳遞到您的<Modal>中,因此它們不可用。

無論如何,這樣做不是一個好主意,tbh。 如果您需要一個孩子來影響父母的 state 最好傳遞一個回調:

const Modal = ({
      onSubmitCb
}) => {
  const [open, setOpen] = useState(false);

  const clearState = () => {
    setOpen(false); //works
    setQuestion(0); //works
    onSubmitCb && onSubmitCb()
  };

...

  return (
    <Modal>
      ...
        <Button
           onClick={()=>handleSubmit()}
        >
           Restart
        </Button>
    </Modal>
  );
};

在你的父母中:

const App = ()=>{
    const clearState = () => {
        setAnswer({});
        setAnswerId({});
        setResponse({});
        setAnswerNameArr([]);
  };
  
  .... 

  return {
      <Modal ... onSubmitCb={clearState} />
   }
}

暫無
暫無

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

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