第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

需要兩次按下的反應按鈕

需要兩次按下的反應按鈕

慕絲7291255 2022-11-03 10:10:40
我當前的功能組件要求我在運行嵌套的 if 語句之前按兩次按鈕。根據(jù)我目前的理解,任何狀態(tài)變化都會重新渲染整個組件,所以我相信這就是阻止 if 語句立即運行的原因。如果這是問題,我仍然不確定如何解決它。const [ inputData, setInputData ] = useState("Botany") // Example of stateconst [ lockInputData, setLockInputData ] = useState("")const [ prevLockInputData, setPrevLockInputData ] = useState("")// Button element propinputDataSubmit={ () => submitData(inputData) } // On button press this will be called.const submitData = async (inputData) => {setLockInputData(inputData);  if (lockInputData !== "" && lockInputData !== prevLockInputData) {    await newCat(inputData.replace(/[" "]/g, "_"));    setPrevLockInputData(lockInputData);  } else if (lockInputData !== "" && lockInputData === prevLockInputData) {    await newSubCat(inputData.replace(/[" "]/g, "_"));  }}使用 inputDataSubmit 的組件位:<form   onSubmit={ () => false}>  <input    action=""    type="text"    placeholder="Category"    value={props.inputData}    onChange={props.handleChange}   />          <button    type="button"     onClick={props.inputDataSubmit}  >  Random  </button></form>隨時提供有關編碼最佳實踐的建議。
查看完整描述

1 回答

?
烙印99

TA貢獻1829條經(jīng)驗 獲得超13個贊

我認為因為setState可能是異步的(并且setLockInputData是 a setState)。


你可以試試:


const submitData = async (inputData) => {

  setLockInputData(inputData);


  if(inputData !== "") {

    if(inputData !== prevLockInputData) {

      await newCat(inputData.replace(/[" "]/g, "_"));

      setPrevLockInputData(inputData);

    }

    else

      await newSubCat(inputData.replace(/[" "]/g, "_"));

  }

}

希望這可以幫助。


查看完整回答
反對 回復 2022-11-03
  • 1 回答
  • 0 關注
  • 87 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號