Skip to content

Commit

Permalink
fix(core): more checks for when swiper is destroyed
Browse files Browse the repository at this point in the history
fixes #5656
fixes #5635
  • Loading branch information
nolimits4web committed Apr 24, 2022
1 parent 8d67b06 commit de47f09
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/core/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,7 @@ class Swiper {

getSlideClasses(slideEl) {
const swiper = this;
if (swiper.destroyed) return '';

return slideEl.className
.split(' ')
Expand Down
6 changes: 6 additions & 0 deletions src/core/events-emitter.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
export default {
on(events, handler, priority) {
const self = this;
if (!self.eventsListeners || self.destroyed) return self;
if (typeof handler !== 'function') return self;
const method = priority ? 'unshift' : 'push';
events.split(' ').forEach((event) => {
Expand All @@ -14,6 +15,7 @@ export default {

once(events, handler, priority) {
const self = this;
if (!self.eventsListeners || self.destroyed) return self;
if (typeof handler !== 'function') return self;
function onceHandler(...args) {
self.off(events, onceHandler);
Expand All @@ -28,6 +30,7 @@ export default {

onAny(handler, priority) {
const self = this;
if (!self.eventsListeners || self.destroyed) return self;
if (typeof handler !== 'function') return self;
const method = priority ? 'unshift' : 'push';
if (self.eventsAnyListeners.indexOf(handler) < 0) {
Expand All @@ -38,6 +41,7 @@ export default {

offAny(handler) {
const self = this;
if (!self.eventsListeners || self.destroyed) return self;
if (!self.eventsAnyListeners) return self;
const index = self.eventsAnyListeners.indexOf(handler);
if (index >= 0) {
Expand All @@ -48,6 +52,7 @@ export default {

off(events, handler) {
const self = this;
if (!self.eventsListeners || self.destroyed) return self;
if (!self.eventsListeners) return self;
events.split(' ').forEach((event) => {
if (typeof handler === 'undefined') {
Expand All @@ -68,6 +73,7 @@ export default {

emit(...args) {
const self = this;
if (!self.eventsListeners || self.destroyed) return self;
if (!self.eventsListeners) return self;
let events;
let data;
Expand Down
2 changes: 1 addition & 1 deletion src/react/swiper-slide.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const SwiperSlide = forwardRef(
};
});
useIsomorphicLayoutEffect(() => {
if (swiper && slideElRef.current) {
if (swiper && slideElRef.current && !swiper.destroyed) {
setSlideClasses(swiper.getSlideClasses(slideElRef.current));
}
}, [swiper]);
Expand Down

0 comments on commit de47f09

Please sign in to comment.