Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/inner-slider.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
"use strict";

import React from "react";
import ReactDOM from "react-dom";
import initialState from "./initial-state";
import debounce from "lodash.debounce";
import classnames from "classnames";
Expand Down Expand Up @@ -195,7 +194,9 @@ export class InnerSlider extends React.Component {
this.debouncedResize();
};
resizeWindow = (setTrackStyle = true) => {
if (!ReactDOM.findDOMNode(this.track)) return;
const isTrackMounted = Boolean(this.track && this.track.node);
// prevent warning: setting state on unmounted component (server side rendering)
if (!isTrackMounted) return;
let spec = {
listRef: this.list,
trackRef: this.track,
Expand Down
5 changes: 5 additions & 0 deletions src/track.js
Original file line number Diff line number Diff line change
Expand Up @@ -197,12 +197,17 @@ var renderSlides = function(spec) {
};

export class Track extends React.PureComponent {
node = null;

handleRef = ref => { this.node = ref };

render() {
const slides = renderSlides(this.props);
const { onMouseEnter, onMouseOver, onMouseLeave } = this.props;
const mouseEvents = { onMouseEnter, onMouseOver, onMouseLeave };
return (
<div
ref={this.handleRef}
className="slick-track"
style={this.props.trackStyle}
{...mouseEvents}
Expand Down
15 changes: 8 additions & 7 deletions src/utils/innerSliderUtils.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import React from "react";
import ReactDOM from "react-dom";

export const getOnDemandLazySlides = spec => {
let onDemandSlides = [];
Expand Down Expand Up @@ -99,8 +98,10 @@ export const extractObject = (spec, keys) => {
export const initializedState = spec => {
// spec also contains listRef, trackRef
let slideCount = React.Children.count(spec.children);
let listWidth = Math.ceil(getWidth(ReactDOM.findDOMNode(spec.listRef)));
let trackWidth = Math.ceil(getWidth(ReactDOM.findDOMNode(spec.trackRef)));
const listNode = spec.listRef;
let listWidth = Math.ceil(getWidth(listNode));
const trackNode = spec.trackRef && spec.trackRef.node;
let trackWidth = Math.ceil(getWidth(trackNode));
let slideWidth;
if (!spec.vertical) {
let centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;
Expand All @@ -115,9 +116,9 @@ export const initializedState = spec => {
slideWidth = listWidth;
}
let slideHeight =
ReactDOM.findDOMNode(spec.listRef) &&
listNode &&
getHeight(
ReactDOM.findDOMNode(spec.listRef).querySelector('[data-index="0"]')
listNode.querySelector('[data-index="0"]')
);
let listHeight = slideHeight * spec.slidesToShow;
let currentSlide =
Expand Down Expand Up @@ -515,7 +516,7 @@ export const getSlideCount = spec => {
: 0;
if (spec.swipeToSlide) {
let swipedSlide;
const slickList = ReactDOM.findDOMNode(spec.listRef);
const slickList = spec.listRef;
const slides = slickList.querySelectorAll(".slick-slide");
Array.from(slides).every(slide => {
if (!spec.vertical) {
Expand Down Expand Up @@ -721,7 +722,7 @@ export const getTrackLeft = spec => {

if (variableWidth === true) {
var targetSlideIndex;
let trackElem = ReactDOM.findDOMNode(trackRef);
const trackElem = trackRef && trackRef.node;
targetSlideIndex = slideIndex + getPreClones(spec);
targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];
targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;
Expand Down