React根据宽度自适应高度的示例代码


Posted in Javascript onOctober 11, 2017

有时对于响应式布局,我们需要根据组件的宽度自适应高度。CSS无法实现这种动态变化,传统是用jQuery实现。

而在React中无需依赖于JQuery,实现相对比较简单,只要在DidMount后更改width即可

Try on Codepen

需要注意的是在resize时候也要同步变更,需要注册个监听器

class Card extends React.Component {
 constructor(props) {
  super(props);
  this.state = {
   width: props.width || -1,
   height: props.height || -1,
  }
 }

 componentDidMount() {
  this.updateSize();
  window.addEventListener('resize', () => this.updateSize());
 }

 componentWillUnmount() {
  window.removeEventListener('resize', () => this.updateSize());
 }

 updateSize() {
  try {
   const parentDom = ReactDOM.findDOMNode(this).parentNode;
   let { width, height } = this.props;
   //如果props没有指定height和width就自适应
   if (!width) {
    width = parentDom.offsetWidth;
   }
   if (!height) {
    height = width * 0.38;
   }
   this.setState({ width, height });
  } catch (ignore) {
  }
 }

 render() {
  return (
   <div className="test" style={ { width: this.state.width, height: this.state.height } }>
    {`${this.state.width} x ${this.state.height}`}
   </div>
  );
 }
}

ReactDOM.render(
 <Card/>,
 document.getElementById('root')
);

参考资料

React根据宽度自适应高度的示例代码

React生命周期

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE6下CSS图片缓存问题解决方法
Dec 09 Javascript
json对象转字符串如何实现
Dec 02 Javascript
js编写trim()函数及正则表达式的运用
Oct 24 Javascript
node.js中的fs.lchownSync方法使用说明
Dec 16 Javascript
JavaScript中property和attribute的区别详细介绍
Mar 03 Javascript
多种JQuery循环滚动文字图片效果代码
Jun 23 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
Apr 18 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
Jun 16 Javascript
浅谈Node模块系统及其模式
Nov 17 Javascript
jQuery简单实现根据日期计算星期几的方法
Jan 09 jQuery
JavaScript 判断数据类型的4种方法
Sep 11 Javascript
用javascript制作qq注册动态页面
Apr 14 Javascript
详解vue中使用express+fetch获取本地json文件
Oct 10 #Javascript
vue router自动判断左右翻页转场动画效果
Oct 10 #Javascript
angular2 ng2 @input和@output理解及示例
Oct 10 #Javascript
ionic选择多张图片上传的示例代码
Oct 10 #Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
Oct 10 #Javascript
防止页面url缓存中ajax中post请求的处理方法
Oct 10 #Javascript
Vue实现数字输入框中分割手机号码的示例
Oct 10 #Javascript
You might like
Apache设置虚拟WEB
2006/10/09 PHP
PHP 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
Python实现快速计算词频功能示例
2018/06/25 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
pandas计数 value_counts()的使用
2019/06/24 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
remote接口和home接口主要作用
2013/05/15 面试题
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
浅谈MySQL函数
2021/10/05 MySQL
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫