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 相关文章推荐
js 对象是否存在判断
Jul 15 Javascript
修复IE9&amp;safari 的sort方法
Oct 21 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
Nov 08 Javascript
JS 实现Json查询的方法实例
Apr 12 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
JavaScript如何实现跨域请求
Aug 05 Javascript
JavaScript触发onScroll事件的函数节流详解
Dec 14 Javascript
详解JS函数stack size计算方法
Jun 18 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
Sep 29 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
setTimeout与setInterval的区别浅析
Mar 23 Javascript
vue 返回上一页,页面样式错乱的解决
Nov 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
一个改进的UBB类
2006/10/09 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
php中全局变量global的使用演示代码
2011/05/18 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
超详细的JS弹出窗口代码大全
2020/04/18 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
python读文件逐行处理的示例代码分享
2013/12/27 Python
Python fileinput模块使用介绍
2014/11/30 Python
python中的字典使用分享
2016/07/31 Python
Python3中详解fabfile的编写
2018/06/24 Python
Python爬虫文件下载图文教程
2018/12/23 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
奥地利网上书店:Weltbild
2017/07/14 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
入党积极分子介绍信
2014/01/17 职场文书
会计人员岗位职责
2014/03/19 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
个人合伙协议书范本
2014/10/14 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
导游词之西递宏村
2019/12/10 职场文书
gateway网关接口请求的校验方式
2021/07/15 Java/Android