[英]How to get element from component
我有一些脚本,需要元素,但是我找不到如何从react组件获取它。 至少,我可以在渲染后获取元素,但是现在我遇到了另一个问题-无法在按钮上创建事件,因为我需要SignatureObj
var SignaturePad = require('signature_pad');
var SignatureWidget = React.createClass({
_handleClear: function(e, SignatureObj) {
SignatureObj.clear();
},
_getSignature: function(canvas) {
return new SignaturePad(canvas);
},
componentDidMount: function() {
var wrapper = this.getDOMNode(),
canvas = wrapper.querySelector('canvas'),
SignatureObj = this._getSignature(canvas);
},
render: function() {
var canvas = React.createElement('canvas');
return (
<div>
{canvas}
<button>Clear</button>
</div>
);
}
});
最后,我需要得到这样的东西
render: function() {
var canvas = React.createElement('canvas'),
>> canvasEl = canvas.getElement(),<< magic
SignatureObj = this._getSignature(canvasEl);
return (
<div>
{canvas}
<button onClick={this._handleClear.bind(this, SignatureObj)}>Clear</button>
</div>
);
}
首先要注意的一点是,不赞成使用getDOMNode,您应该使用findDOMNode,进一步,您不需要在render内使用create元素,因为如果您使用jsx语法,那么它将被转换为您正在使用的语法(createlement ..etc ..在引擎盖下)
关于选择元素的问题:
React.findDOMNode(this.refs.findMe)
<-使您找到节点或称其为:D(Magic)
render: function() {
return (
<div>
<canvas ref='findMe'></canvas> <------- magic
<button>Clear</button>
</div>
);
}
希望这可以帮助! 一些不错的读物:
裁判: https : //facebook.github.io/react/docs/more-about-refs.html
jsx: https ://facebook.github.io/react/docs/jsx-in-depth.html
我用这种方式添加事件
componentDidMount: function() {
var pad = this.refs.pad.getDOMNode(),
saveButton = this.refs.save.getDOMNode(),
clearButton = this.refs.clear.getDOMNode(),
SignatureObj = this._getSignature(pad);
clearButton.onclick = this._handleClear.bind(this, SignatureObj);
saveButton.onclick = this._handleSave.bind(this, SignatureObj);
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.