Come seleziono determinate barre in react.js?Come accedere a un elemento DOM in React? Qual è l'equivalente di document.getElementById() in React
Questo è il mio codice:
var Progressbar = React.createClass({
getInitialState: function() {
return {completed:this.props.completed};
},
addPrecent: function(value){
this.props.completed+=value;
this.setState({completed:this.props.completed});
},
render: function() {
var completed = this.props.completed;
if (completed < 0) {completed = 0};
return (...);
}
voglio usare questo componente React:
var App = React.createClass({
getInitialState: function() {
return {baction: 'Progress1'};
},
handleChange: function(e){
var value = e.target.value;
console.log(value);
this.setState({baction:value});
},
handleClick10:function(e){
console.log('You clicked: ', this.state.baction);
document.getElementById(this.state.baction).addPrecent(10);
},
render: function() {
return (
<div class="center">Progress Bars Demo
<Progressbar completed={25} id="Progress1"/>
<h2 class="center"></h2>
<Progressbar completed={50} id="Progress2"/>
<h2 class="center"></h2>
<Progressbar completed={75} id="Progress3"/>
<h2 class="center"></h2>
<span>
<select name='selectbar' id='selectbar' value={this.state.baction} onChange={this.handleChange}>
<option value="Progress1">#Progress1</option>
<option value="Progress2">#Progress2</option>
<option value="Progress3">#Progress3</option>
</select>
<input type="button" onClick={this.handleClick10} value="+10"/>
<button>+25</button>
<button>-10</button>
<button>-25</button>
</span>
</div>
)
}
});
voglio eseguire la funzione handleClick10 ed eseguire l'operazione per il mio progressbar selezionato. Ma il risultato che ottengo è:
You clicked: Progress1
TypeError: document.getElementById(...) is null
Come si seleziona l'elemento certo in react.js?
Facebook sconsiglia questo approccio. Vedi qui https://facebook.github.io/react/docs/refs-and-the-dom.html – Dmitry
@dmitrymar Come posso vedere la pagina sopra è scritta per la v15.4.2 in poi e immagino, questo non era lì prima quando ho scritto la risposta. In ogni caso ha modificato la risposta con l'approccio corretto –