为了账号安全,请及时绑定邮箱和手机立即绑定

当我的鼓垫触发 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 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信