rc-scroll-into-view
v1.0.9
Published
Solving the issue of scrollIntoView failing during asynchronous scrolling in JavaScript.
Downloads
513
Maintainers
Readme
当某一个节点还没有渲染出来,但这个时候又调用了js 原生的scrollIntoView;或者这个节点已经生成,方法也成功调用,但是又被其他晚加载的元素顶掉了,导致scrollIntoView失效。这个库就是用来解决这种情况。妈妈再也不用担心scrollIntoView失效了!!! rc-scroll-into-view.
Install
yarn add rc-scroll-into-view
or
npm install rc-scroll-into-view --save
Usage
import React, { useRef } from 'react';
import ScrollIntoView from 'rc-scroll-into-view';
const App = () => {
const ref = useRef();
return (
<ScrollInto scrollRef={ref} scrollOptions={{ block: 'center', behavior: 'smooth' }}>
<div ref={ref}>child</div>
</ScrollInto>
);
};
export default App;
使用 selector
import React from 'react';
import ScrollInto from 'rc-scroll-into-view';
const App = () => (
<ScrollInto selector="#test" scrollOptions={{ block: 'center', behavior: 'smooth' }}>
<div id="test">child</div>
</ScrollInto>
);
export default App;
使用 ref
import React, { useRef } from 'react';
import ScrollInto from 'rc-scroll-into-view';
const App = () => {
const ref = useRef();
return (
<ScrollInto scrollRef={ref} scrollOptions={{ block: 'center', behavior: 'smooth' }}>
<div ref={ref}>child</div>
</ScrollInto>
);
};
export default App;
使用 target
import React, { useRef } from 'react';
import ScrollInto from 'rc-scroll-into-view';
const App = () => {
const targetRef = useRef();
const ref = useRef();
return (
<ScrollInto
scrollRef={ref}
target={targetRef}
scrollOptions={{ block: 'center', behavior: 'smooth' }}
>
<div ref={targetRef}>
这是另一个child
<div ref={ref}>child</div>
</div>
</ScrollInto>
);
};
export default App;
API
| 属性 | 说明 | 类型 | 默认值 | 版本 |
| --- | --- | --- | --- | --- |
| selector | 需要滚动的选择器字段 | string
| -- | 1.0.0 |
| scrollOptions | 滚动属性配置 | ScrollIntoViewOptions
| -- | 1.0.0 |
| isScrollable | 是否需要滚动 | boolean
| -- | 1.0.0 |
| scrollRef | 需要滚动的元素的 ref | MutableRefObject<HTMLElement \| null>
| -- | 1.0.0 |
| target | 父节点:用来判断什么时候停止监听页面是否发生改变 | Element
| () => Element
| MutableRefObject<Element>
| document
| 1.0.0 |