Метод handleClick
в button.js
возвращает элемент <audio>
, который является избыточным, поскольку вы хотели бы воспроизвести звук onClick
.
Вместо этого я использовал конструктор Audio
для создания экземпляра аудиоклипа, используя URL-адрес, предоставленный в качестве реквизита, который я установил в состояние.
Затем я использую функцию обратного вызова для вызова метода play()
.
handleClick = () => {
const audio = new Audio(this.props.cfg.src);
this.setState({ audio }, () => {
this.state.audio.play();
});
};
Итак, ваш button.js
становится примерно таким:
import React, { Component } from "react";
const buttonStyle = {};
export default class Button extends Component {
constructor(props) {
super(props);
this.state = {
audio: false
};
}
handleClick = () => {
console.log(this.props.cfg.src);
const audio = new Audio(this.props.cfg.src);
this.setState({ audio }, () => {
this.state.audio.play();
});
};
render() {
return (
<div>
<button style={buttonStyle} onClick={this.handleClick}>
<h1>{this.props.cfg.name}</h1>
</button>
</div>
);
}
}
Ваш main.js
остается как есть.
Вот рабочая коды и коробка .