Giter Club home page Giter Club logo

Comments (2)

maxlanger avatar maxlanger commented on August 27, 2024 4

Hi @evanzio,
not sure if it's still relevant for you, but I stumbled over the same problem of holding the activeIndex in the normal react state. My attempt looks like this:

import React from 'react';
import Swiper from 'react-id-swiper';

class Foo extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      swiper: null,
      activeSlideIndex: null,
    };

    this.swiperRef = this.swiperRef.bind(this);
  }

  swiperRef(ref) {
    this.setState({ swiper: ref.swiper });
  }

  render() {
    const swiperParams = {
      slidesPerView: 'auto',
      centeredSlides: true,
      slideToClickedSlide: true,
      on: {
        slideChangeTransitionStart:
          () => this.state.swiper && this.setState({ activeSlideIndex: this.state.swiper.activeIndex }),
      },
    };

    return (
      <div>
        <span>{this.state.activeSlideIndex}</span>
        <Swiper {...swiperParams} ref={this.swiperRef}>
          {this.props.slides.map(slide => (
            <div>{slide.value}</div>
          ))}
        </Swiper>
      </div>
    );
  }
};

from react-id-swiper.

kidjp85 avatar kidjp85 commented on August 27, 2024 3

Hi @evanzio , thank you for your report. Currently, it's impossible to setState in swiper callback function, because every time new state change it will re-render the Swiper component . That why u receive the error Uncaught TypeError: Cannot read property 'emitterEventListeners' of null. Instead of putting in the same component, I recommend you to separate the swiper and <p>Current Active Index: {this.state.activeIndex}</p> in two component. If you use some state library management like Redux or Mobx, you can put the action method to update state inside the swiper callback function. Thanks :)

from react-id-swiper.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.