从无法访问的变量设置组件状态

时间:2019-08-28 03:18:54

标签: reactjs filereader react-state

如何让media.duration生活在州环境中?

现在,即使试图更改状态,我也无法访问它

  handleClick(e) {
        e.preventDefault();

    var reader = new FileReader();
    reader.readAsDataURL(this.state.uploadedFile);
    reader.onload = function() {
      var media = new Audio(reader.result);
      media.onloadedmetadata = function() {
        console.log(media.duration); // <-- THIS WORKS!!!!!!!!!!!!!!
      };
    };
    console.log(media.duration) //<------THIS DOES NOT WORK!!!!!!!!!!
    console.log("The link was clicked.");
    console.log(this.state.duration);
}

来自:How to get duration of video when I am using filereader to read the video file?

_________________________________________

我尝试过,但是没有用

    this.setState({duration:media.duration},()=>{
console.log(this.state.duration)
})

1 个答案:

答案 0 :(得分:0)

这是因为您使用的媒体变量不在范围内。 请尝试这个。

handleClick(e) {
    e.preventDefault();
    var reader = new FileReader();
    reader.readAsDataURL(this.state.uploadedFile);
    reader.onload = () => {
      var media = new Audio(reader.result);
      media.onloadedmetadata = () => {
        console.log(media.duration); // <-- THIS WORKS!!!!!!!!!!!!!!
        this.setState({duration: media.duration});
      };
    };
}