javascript - React 获取节点css属性求助
天蓬老师
天蓬老师 2017-04-11 11:45:43
0
2
298

准备写个简单的React Carousel组件。遇到个难点:计算节点的css属性。

  changeVisiableContent(index) {
    let distance = (index - this.state.index) * 270;
    let node = ReactDOM.findDOMNode(this);
    let marginTop = getComputedStyle(ReactDOM.findDOMNode(this)).marginTop;
    node.style.marginTop = (Number.parseInt(marginTop) - distance) + 'px';
    this.setState({index: index});
    // this.props.clickIndex(index);
  }

基本逻辑:点击一下页面上的标签,通过设置marginTop实现轮播。设置marginTop带有动画效果。发现一个bug:
在上一次动画没有完成时,点击标签,getComputedStyle获取的是这个时间点marginTop,导致内容错乱了。

Q1:有没有方法获取动正确的css属性值?
@2:上面的方法是直接操作DOM节点,不符合React的思想,老司机们能分享个更好的实现思路吗?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
黄舟

利用ref.. 给标签加上ref属性(ref="name")。然后通过this.refs.name 来访问该标签。this.refs.name.style.属性,可以访问。

  1. 既然是轮播,那就应该有循环。setInterval

  2. 如果你是想通过点击一次标签就轮播一次。那就在轮播的动画执行过程中,肯定要设置标签不能再点击。

迷茫

使用offsetTop取值

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!