亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

事件返回未定義,試圖通過組件傳遞它

事件返回未定義,試圖通過組件傳遞它

千巷貓影 2023-08-24 17:18:14
我的標題似乎沒有多大意義,讓我嘗試解釋一下。我有一個GameContainer包含一個ButtonContainer組件的組件。現在我ButtonContainer返回兩個按鈕,X 和 Y。我正在傳遞一個函數 foo 例如,現在在我的 Game.js 文件中我將按鈕函數作為 props ( (e) => playGame(e)) 傳遞。我需要事件目標 id 來查看用戶是否按下了 X 或 Y。我遇到的問題是當我執行以下代碼時undefined返回。游戲.jsconst playGame = (e) => {   console.log(e.target.id);}return (   <GameContainer buttonFn={(e) => playGame(e)} />);游戲容器.jsreturn (  <>    <p>Game name</p>    <ButtonContainer buttonFn={buttonFn} />  </>);ButtonContainer.jsreturn (  <>    <button onClick={buttonFn}>X</button>    <button onClick={buttonFn}>Y</button>  </>);我可以使用 redux,然后將狀態傳遞給我的 Game.js,但我覺得有一種更簡單的方法可以做到這一點。e.target.id 在我的 Game.js 中運行良好,但是當我決定將代碼拆分為可重用組件并使用 props 時,它返回 undefined。感謝任何幫助希望我的解釋有意義。
查看完整描述

1 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

為按鈕添加value和。id


export default function App() {

  const playGame = (e) => {

    console.log(e.target.id);

  };

  return <GameContainer buttonFn={(e) => playGame(e)} />;

}


function GameContainer({ buttonFn }) {

  return (

    <>

      <p>Game name</p>

      <ButtonContainer buttonFn={buttonFn} />

    </>

  );

}


function ButtonContainer({ buttonFn }) {

  return (

    <>

      <button id="btn-1" value="btn-1" onClick={buttonFn}>

        X

      </button>

      <button id="btn-2" value="btn-2" onClick={buttonFn}>

        Y

      </button>

    </>

  );

}

代碼 - https://codesandbox.io/s/old-cloud-0deig?file=/src/App.js:51-592


查看完整回答
反對 回復 2023-08-24
  • 1 回答
  • 0 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號