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

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

當我的鼓墊觸發 onClick 函數時,我該如何設置狀態?

當我的鼓墊觸發 onClick 函數時,我該如何設置狀態?

絕地無雙 2023-04-27 10:07:24
我是 React 的新手,目前正在構建鼓機。我已經連接鼓機來播放包含在其 DrumPad 子組件中的音頻。我的問題是,每當單擊其父鼓墊 div 時,我無法創建一個代表每個音頻顯示的 id。我知道我需要初始化狀態然后設置狀態但我不知道如何在我的代碼中實現它。這是我的代碼import React from 'react';import './App.css';import soundData from "./soundData.js"import DrumPad from "./drumPad.js"class App extends React.Component {  constructor(props){   super(props)     this.state = {       display : "hello",      }      this.handleDisplay = this.handleDisplay.bind(this)    }     handleDisplay (){   this.setState({display: }) //what do i need to do here? }    render(){        return(     <div      id="drum-machine"      >            <div     id="display"     >       {this.state.display}     </div>     {soundData.map((data) =>      (        <DrumPad         data={data}         key={data.letter}         id = {data.id}        handleDisplay = {this.handleDisplay}                         />      ))}     </div>    )     }  }export default App;**drumPad.js**import React from "react"function DrumPad(props){      function handleClick(){                const audio =  new Audio(props.data.src)        audio.play()        audio.currentTime = 0                 }         return(            <div             className= "drum-pad"             id = {props.data.id}             onClick = {handleClick}            >                <h1>{props.data.letter}</h1>                <audio                 className = "clip"                 id = {props.data.letter}                 src = {props.data.src}                                />                        </div>        )    }    export default DrumPad
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

為了更新狀態,您需要將函數 handleDisplay 傳遞給 DrumPad,并在 handleClick 中調用 handleDisplay,將所需數據作為參數傳遞。

代碼沙箱

//App.js? ??

handleDisplay(key) {

? ? this.setState({

? ? ? display: key

? ? });

? }


//DrumPad.js

? function handleClick() {

? ? const audio = new Audio(props.data.src);

? ? audio.play();

? ? audio.currentTime = 0;

? ? props.handleDisplay(`${props.data.letter} : ${props.data.id}`);

? }


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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