Как выбрать определенные столбцы в файле response.js?Как получить доступ к элементу DOM в React? Что такое equilvalent документа.getElementById() в React
Это мой код:
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 (...);
}
Я хочу использовать этот компонент 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>
)
}
});
Я хочу, чтобы выполнить функцию handleClick10 и выполнить операцию для выбранного мной ProgressBar. Но результат я получаю:
You clicked: Progress1
TypeError: document.getElementById(...) is null
Как выбрать определенный элемент в react.js?
Facebook советует против такого подхода. См. Здесь https://facebook.github.io/react/docs/refs-and-the-dom.html – Dmitry
@dmitrymar Как я вижу, указанная выше страница написана для v15.4.2 и дальше, и я думаю, этого не было раньше, когда я написал ответ. Anyways отредактировал ответ с правильным подходом –