javascript - Kan ikke spille av lyd i React Typescript med play() funksjon | Feil: Egenskapen 'play' eksisterer ikke
Jeg har laget en enkel lydspiller i React js med Typescript, og jeg prøver å bruke de vanlige HTML5-funksjonene for å spille og pause lyden, men det fungerer ikke.
Når jeg gjør mytrack.play(); får jeg denne feilen: Property 'play' finnes ikke på typen 'HTMLElement'.
Her er koden min:
import React, { Component } from "react";
import "./SimplePlayer.css";
import styled from "styled-components";
export interface SimplePlayerProps {}
var mytrack = document.getElementById("mytrack");
console.log(mytrack);
mytrack.play();
export class SimplePlayer extends Component<SimplePlayerProps> {
constructor(props: SimplePlayerProps) {
super(props);
console.log(this.props);
this.state = {};
}
render() {
return (
<div id="wrapper">
<audio id="mytrack" controls>
<source src="audio.mp3" />
</audio>
<nav>
<div id="defaultBar">
<div id="progressBar" />
</div>
<div id="buttons">
<button type="button" id="playButton" />
<button type="button" id="muteButton" />
<span id="currentTime">0:00</span>/
<span id="fullDuration">0:00</span>
</div>
</nav>
</div>
);
}
}All hjelp ville bli virkelig satt pris på :) Mange takk
Med vennlig hilsen, Musayyab Naveed
Svar #1
Det er et par problemer her.
- Metoden
playfinnes påHTMLAudioElementog ikke påHTMLElement.getElementByIdreturnererHTMLElement | null, så du må kastemytracksomHTMLAudioElementfor at TypeScript skal tillate det.
Men det er ikke hovedproblemet.
- Det egentlige problemet er at koden din for å hente og spille av lydfilen kjører før koden (i
render) som oppretter lydelementet. Hvis du ønsker å spille av lydfilen umiddelbart, prøv å inkludereautoplay-egenskapen påaudio-elementet.
Svar #2
//file for export
export const AudioPlay = (file) => {
new Audio(`/static/sounds/${file}`).play(); //under folder public
};
//file import
import {AudioPlay} from './comm';
//onClick event
AudioPlay('stockin-ok.mp3');
