首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iDangero.us Swiper &处理动态数据

iDangero.us Swiper &处理动态数据
EN

Stack Overflow用户
提问于 2015-10-01 16:16:43
回答 1查看 3.1K关注 0票数 3

我有一个问题涉及到iDangero.us Swiper的实现。我已经玩了很长一段时间了,我的问题是当我处理动态数据时,实际的滑动不起作用。让我举例说明这一点。

我的代码由以下方式组成:

1)我有一个名为SwiperComponent的组件。有两个部分--方法componentDidMount(),其中我将对Swiper组件进行初始化和呈现(),其中一个部分生成由iDangero.us Swiper定义的结构。

代码语言:javascript
复制
var SwiperComponent = React.createClass({
  componentDidMount() {
    this.swipe = new Swiper(React.findDOMNode(this), {
      slidesPerView: 3,
      centeredSlides: true,
      spaceBetween: 10
    });
  },

  render() {
    return React.createElement('div', React.__spread({}, this.props, {className: 'swiper-container'}),
      React.createElement('div', {className: 'swiper-wrapper'},
        React.Children.map(this.props.children, function (child, index) {
          return React.createElement('div', {className: 'swiper-slide'}, React.cloneElement(child));
       })
      )
    );
  }
});

2)我有一个简单的Index.jsx文件,在该文件中,我准备了一个“动态内容”,只需创建一个数组,然后填充一些图像。

代码语言:javascript
复制
var Index = React.createClass({

  getInitialState: function() {
    return {
      movies: []
    };
  },

  componentDidMount() {
    this.setState({
      movies: ["http://www.themusehotel.com/design/images/930-481/nyc-skyline.jpg", "https://ephemeralnewyork.files.wordpress.com/2010/08/broadway47thstreet2010.jpg", "http://41.media.tumblr.com/27d14da3be1e02eb7b6ead5bda0ac1b2/tumblr_n5dqi4XDz61qdeuyro1_1280.jpg", "http://photos.cntraveler.com/2014/09/29/5429c32b425f183f61bf7316_new-york-city-skyline.jpg"],
    });
  },


  render: function() {
    var items = this.state.movies;

    return (
      <SwiperComponent>
      {
        items.map((item) => {
          return (
           <img src={item} width="100%" height="200"/>
          )
        })
      }
      </SwiperComponent>
    )
  }
});

正如我提到的,问题是滑动部分不能工作。有趣的是,一旦我在Chrome中打开开发人员控制台,或者滑动数组并放置一些静态标记,它就开始工作了。

我准备了一个JSfiddle,您可以在其中看到这个问题的行动- https://jsfiddle.net/4z3zyk07/4/

有人知道我错过了什么,做错了什么吗?我会非常感谢你的帮助。非常感谢!

拉德克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-26 03:40:46

这是因为您使用this.setState"componentDidMount"的生命周期中填充数组电影

当调用外部componentDidMount时,内部componentDidMount已经被调用,此时您的Swiper找不到任何图片,因此它无法计算每个图像的正确宽度。

在componentWillMount中初始化图片数据。

代码语言:javascript
复制
  componentWillMount() {
    this.setState({
      movies: [your pictures],
    });
  },

然后斯威珀就会知道盒子里有多少张图片,并计算出每个人的宽度。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32892285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档