Jak wybrać określone paski w pliku react.js?Jak uzyskać dostęp do elementu DOM w React? Co to jest equilvalent dokumentu document.getElementById() w React
To jest mój kod:
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 (...);
}
Chcę używać tego React komponent:
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>
)
}
});
Chcę uruchomić funkcję handleClick10 i wykonać operację dla wybranego ProgressBar. Ale wynik pojawia się:
You clicked: Progress1
TypeError: document.getElementById(...) is null
Jak wybrać pewien element react.js?
Facebook odradza tego podejścia. Zobacz tutaj: https://facebook.github.io/react/docs/refs-and-the-dom.html – Dmitry
@dmitrymar Jak widzę powyższa strona jest napisana dla wersji v.1.4.2 i myślę, że to nie było wcześniej, kiedy napisałem odpowiedź. Tak czy inaczej zredagowałem odpowiedź z poprawnym podejściem –