React.JS在虚拟DOM中计算img宽度
React.JS calculating img width in virtual DOM
我正试图找到<img>
的宽度,以便通过JavaScript将其居中。
尝试计算此react.js DOM节点的宽度时返回0。
var Player = React.createClass({
componentDidMount:function(){
var imgEl = this.refs.imgSize.getDOMNode();
console.log(imgEl.offsetWidth);
},
render: function () {
return (
<img ref="imgSize" src={this.props.imageURL} />
);
}
});
您可以使用图像的onLoad
事件来确保在尝试以下操作之前已加载:
<script src="http://fb.me/react-0.12.2.js"></script>
<script src="http://fb.me/JSXTransformer-0.12.2.js"></script>
<script type="text/jsx;harmony=true">void function() { "use strict";
var Player = React.createClass({
_onLoad(e) {
console.log(e.target.offsetWidth)
},
render() {
return <img src={this.props.imageURL} onLoad={this._onLoad}/>
}
})
React.render(<Player imageURL="http://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg"/>, document.body)
}()</script>
我写了一个React库,它向组件公开了一个size对象(带有宽度和高度道具)。
你可以在你的用例中这样使用它:
var SizeMe = require('react-sizeme');
var Player = React.createClass({
componentDidMount:function(){
var imgEl = this.refs.imgSize.getDOMNode();
console.log(imgEl.offsetWidth);
},
render: function () {
// height and width via props!!
var width = this.props.width;
var height = this.props.height;
return (
<img ref="imgSize" src={this.props.imageURL} />
);
}
});
// Wrap your component with the SizeMe HOC!
module.exports = SizeMe()(Player);
演示:https://react-sizeme-example-esbefmsitg.now.sh/
Github:https://github.com/ctrlplusb/react-sizeme
相关文章:
- 如何更改<svg>标记为<img>用js标记
- 根据元素和容器大小计算边距
- 有没有一种方法可以防止img get请求使用css或js发生
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- Javascript:使用绝对路径设置img src
- Setting default onclick behavior for <img> tag in gene
- 使用D3.js计算带有字母间距的文本长度
- 使用CSS或JavaScript计算分页符的数量
- 可以't计算自定义谷歌地图的js
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- JavaScript计算帮助(乘以时间)
- 如何计算对象文字中的键
- JavaScript循环无法正确计算/显示结果
- 与域在同一台计算机上运行的NODEJS服务器的CORS错误
- 四舍五入JavaScript计算
- 如何在页面加载中使用Jquery/Javascript确定img源
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 计算HTML中的页数
- React.JS在虚拟DOM中计算img宽度
- 如何在Angularjs中延迟img src url计算