Motivation
In frontend development, pull-to-refresh is a very common feature.
Although there are many libraries in React now that can implement this feature, they have some issues:
- Most components with pull-to-refresh functionality are UI libraries, so after import a pull-to-refresh component, the entire UI library often needs to be imported, which adds unnecessary dependencies.
- Most of these libraries have low customization options, making it difficult to customize the pull-down animation effects.
- It requires setting the height of the pull container and cannot utilize the scrolling of the parent container. To address these issues, ReactPullToRefreshify was born.
Advantages
ReactPullToRefreshify has the following advantages👇:
- It is a minimalist React pull-to-refresh component that does not rely on other packages.
- It offers a higher level of customization, allowing you to easily create your own animation effects.
- Furthermore, the compressed file size is only 2kb, making it suitable for both mobile and desktop platforms.
Installation
$ npm i react-pull-to-refreshify
# or
$ yarn add react-pull-to-refreshify
Usage
function renderText(pullStatus, percent) {
switch (pullStatus) {
case "pulling":
return (
<div>
{`Pull down `}
<span style={{ color: "green" }}>{`${percent.toFixed(0)}%`}</span>
</div>
);
case "canRelease":
return "Release";
case "refreshing":
return "Loading...";
case "complete":
return "Refresh succeed";
default:
return "";
}
}
const [refreshing, setRefreshing] = useState(false);
function handleRefresh() {
setRefreshing(true);
setTimeout(() => {
setRefreshing(false);
}, 2000);
}
<PullToRefreshify
refreshing={refreshing}
onRefresh={handleRefresh}
renderText={renderText}
>
{list.map((item, i) => (
<div key={item.id}>{item}</div>
))}
</PullToRefreshify>;
Examples
Github
If you want to learn more about the implementation details, please click on the link below to view it.
react-pull-to-refreshify
Top comments (0)