如何在React中访问DOM元素?什么是React中document.getElementById()的等效项
如何在react.js中选择某些栏?
这是我的代码:
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函数并为我选择的进度栏执行操作。但是我得到的结果是:
You clicked: Progress1
TypeError: document.getElementById(...) is null
如何在react.js中选择特定元素?
由于React使用JSX代码创建HTML,因此我们无法使用documment.querySelector或getElementById之类的调节方法来引用dom。
相反,我们可以使用React ref系统访问和操作Dom,如下例所示:
}
您可以更换
通过
用于获取元素
react
,你需要使用ref
和函数内可以使用ReactDOM.findDOMNode
的方法。但是我想做的更多的是在事件内部调用ref
这是一个很好的链接,可以帮助您找出答案。
您可以通过指定
ref
编辑:
在React 16.3+中,用于
React.createRef()
创建引用:为了访问元素,请使用:
使用React.createRef()的DOC
编辑
但是,facebook建议不要这样做,因为字符串引用存在一些问题,被认为是旧问题,并且很可能在将来的发行版中被删除。
从文档:
对于React 16.2和更早版本,推荐的方法是使用回调模式:
DOC使用回调
甚至旧版本的react定义的引用都使用如下字符串
为了得到元素就做
记住要
this
在箭头功能块内使用,例如:等等...
你的回答