【发布时间】:2022-01-08 10:39:13
【问题描述】:
我正在尝试在 React 中构建鼓机。当我单击一个按钮时,我希望播放孩子的音频剪辑。为此,我在单击时将按钮和音频的 id 传递给方法,然后使用 document.getElementById(Id).play()。但是,这不起作用。我在这里是正确的还是完全错误的?
import * as React from "https://cdn.skypack.dev/react@17.0.1";
import * as ReactDOM from "https://cdn.skypack.dev/react-dom@17.0.1";
class App extends React.Component {
constructor(props) {
super(props);
this.playClip = this.playClip.bind(this);
}
playClip = (e) => {
const id = event.target.id;
document.getElementById(id).play();
}
render() {
return(
<div className="container" id="drum-machine">
<h3>My drum-machine</h3>
<div class="grid" id="display">
<button className="drum-pad" id="Q" onClick={this.playClip}>Q<audio className="clip" src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-dom.min.js" id="Q" /></button>
<button className="drum-pad" id="W" onClick={this.playClip}>W<audio className="clip" src="" id="W" /></button>
<button className="drum-pad" id="E" onClick={this.playClip}>E<audio className="clip" src="" id="E" /></button>
<button className="drum-pad" id="A" onClick={this.playClip}>A<audio className="clip" src="" id="A" /></button>
<button className="drum-pad" id="S" onClick={this.playClip}>S<audio className="clip" src="" id="S" /></button>
<button className="drum-pad" id="D" onClick={this.playClip}>D<audio className="clip" src="" id="D" /></button>
<button className="drum-pad" id="Z" onClick={this.playClip}>Z<audio className="clip" src="" id="Z" /></button>
<button className="drum-pad" id="X" onClick={this.playClip}>X<audio className="clip" src="" id="X" /></button>
<button className="drum-pad" id="C" onClick={this.playClip}>C<audio className="clip" src="" id="C" /></button>
</div>
</div>
)
}
}
ReactDOM.render(<App />, document.getElementById("drum-machine"));
【问题讨论】: