diff --git a/package.json b/package.json index 70afb2b..8969324 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rc-scroll-anim", - "version": "2.5.4", + "version": "2.5.5", "description": "scroll-anim anim component for react", "keywords": [ "react", diff --git a/src/ScrollLink.jsx b/src/ScrollLink.jsx index 27df89e..1993b23 100644 --- a/src/ScrollLink.jsx +++ b/src/ScrollLink.jsx @@ -89,18 +89,18 @@ class ScrollLink extends React.Component { toTop - toShow + 0.5 : toTop; this.initTime = Date.now(); this.rafID = requestAnimationFrame(this.raf); - /* scrollLinkLists.forEach(item => { + scrollLinkLists.forEach(item => { if (item !== this) { item.remActive(); } }); - this.addActive(); */ + this.addActive(); } getElement = () => { this.clientHeight = this.target ? this.target.clientHeight : windowHeight(); const elementDom = document.getElementById(this.props.to); - const elementRect = elementDom.getBoundingClientRect(); + const elementRect = elementDom && elementDom.getBoundingClientRect(); return { elementDom, elementRect }; } diff --git a/src/ScrollOverPack.jsx b/src/ScrollOverPack.jsx index d743129..e8b373e 100644 --- a/src/ScrollOverPack.jsx +++ b/src/ScrollOverPack.jsx @@ -105,10 +105,11 @@ class ScrollOverPack extends ScrollElement { if (!item) { return null; } + const key = item.key || (Date.now() + Math.random()).toString(16).replace('.', ''); return ( item.type.isTweenOne ? - React.cloneElement(item, { ...item.props, paused: !show }) : - React.cloneElement(item, item.props, show && item.props.children) + React.cloneElement(item, { ...item.props, key, paused: !show }) : + React.cloneElement(item, { ...item.props, key }, show && item.props.children) ); }); childToRender = createElement(component, { ...props, ...componentProps }, children); @@ -119,11 +120,12 @@ class ScrollOverPack extends ScrollElement { if (!item) { return null; } + const key = item.key || (Date.now() + Math.random()).toString(16).replace('.', ''); // 判断 TweenOne; if (item.type.isTweenOne) { - return React.cloneElement(item, { reverse: true }); + return React.cloneElement(item, { key, reverse: true }); } - return React.cloneElement(item, {}, null); + return React.cloneElement(item, { key }, null); }); } else { this.children = this.state.children;