我是 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}`);
}
添加回答
举报
0/150
提交
取消