2015-07-27 31 views
5

Utilizzando React, desidero ottenere l'elemento audio.Come ottenere l'elemento audio?

var AudioPlayer = React.createClass({ 
    componentDidMount: function() { 
     console.info('Audio: component did mount'); 
     var audio = React.findDOMNode('audio'); 
     console.info('audio', audio); 
    }, 
    render : function() { 
     return (
      <audio src="/static/music/foo.mp3" controls /> 
     ); 
    } 
}); 

Ma io continuo a ricevere l'errore:

Error: Invariant Violation: Element appears to be neither ReactComponent nor DOMNode (keys: 0,1,2,3,4)

componenti Sicuramente abbassate sono Reagire classi?

risposta

6

Funziona con i riferimenti dei componenti:

var AudioPlayer = React.createClass({ 
    componentDidMount: function() { 
     console.info('[AudioPlayer] componentDidMount...'); 
     this.props.el = React.findDOMNode(this.refs.audio_tag); 
     console.info('audio prop set', this.props.el); 
    }, 
    render: function() { 
     console.info('[AudioPlayer] render...'); 
     return (
      <audio ref="audio_tag" src="/static/music/foo.mp3" controls autoplay="true"/> 
     ); 
    } 
}); 
+0

React.findDOMNode è deprecato dal Reagire 0.14.0, usa invece ReactDOM.findDOMNode –