Taro 生命周期相关 API 详解
Taro 作为一款多端统一开发框架,极大地简化了小程序、H5、React Native 等多平台的开发难度。在 Taro 3.x 及以上版本中,推荐使用 React Hooks 风格的生命周期 API,这些 API 让开发者可以像写 React 组件一样,优雅地管理页面和组件的生命周期。本文将详细介绍 Taro 常用的生命周期相关 API,包括 Taro.useDidShow、Taro.useDidHide、Taro.usePullDownRefresh、Taro.useReachBottom、Taro.usePageScroll、Taro.useShareAppMessage、Taro.useShareTimeline、Taro.useReady、Taro.useUnload 的用法和应用场景。
1. Taro.useDidShow
作用 :监听页面显示(onShow)事件。
应用场景:页面每次显示时执行某些操作,比如刷新数据、统计页面访问等。
用法示例:
jsx
import { useDidShow } from '@tarojs/taro';
function MyPage() {
useDidShow(() => {
console.log('页面显示了');
// 可以在这里请求数据或做其他操作
});
return <View>内容</View>;
}
2. Taro.useDidHide
作用 :监听页面隐藏(onHide)事件。
应用场景:页面每次被隐藏时执行操作,比如暂停定时器、保存状态等。
用法示例:
jsx
import { useDidHide } from '@tarojs/taro';
function MyPage() {
useDidHide(() => {
console.log('页面隐藏了');
// 可以在这里暂停动画、保存数据等
});
return <View>内容</View>;
}
3. Taro.usePullDownRefresh
作用 :监听页面下拉刷新事件。
应用场景:用户下拉页面时刷新数据。
用法示例:
jsx
import { usePullDownRefresh, stopPullDownRefresh } from '@tarojs/taro';
function MyPage() {
usePullDownRefresh(() => {
// 这里执行刷新操作
fetchData().then(() => {
stopPullDownRefresh(); // 刷新完成后停止下拉刷新动画
});
});
return <View>内容</View>;
}
4. Taro.useReachBottom
作用 :监听页面触底事件。
应用场景:实现上拉加载更多数据的功能。
用法示例:
jsx
import { useReachBottom } from '@tarojs/taro';
function MyPage() {
useReachBottom(() => {
// 这里加载更多数据
loadMoreData();
});
return <View>内容</View>;
}
5. Taro.usePageScroll
作用 :监听页面滚动事件。
应用场景:实现滚动监听,比如吸顶、懒加载等。
用法示例:
jsx
import { usePageScroll } from '@tarojs/taro';
function MyPage() {
usePageScroll((res) => {
console.log('页面滚动到', res.scrollTop);
// 可以根据 scrollTop 做吸顶、显示返回顶部按钮等
});
return <View>内容</View>;
}
6. Taro.useShareAppMessage
作用 :自定义页面右上角转发内容。
应用场景:用户点击右上角分享按钮时,定制分享的标题、图片、路径等。
用法示例:
jsx
import { useShareAppMessage } from '@tarojs/taro';
function MyPage() {
useShareAppMessage(() => {
return {
title: '自定义分享标题',
path: '/pages/index/index',
imageUrl: 'https://example.com/share.png'
};
});
return <View>内容</View>;
}
7. Taro.useShareTimeline
作用 :自定义分享到朋友圈的内容(仅微信小程序支持)。
应用场景:用户点击分享到朋友圈时,定制分享内容。
用法示例:
jsx
import { useShareTimeline } from '@tarojs/taro';
function MyPage() {
useShareTimeline(() => {
return {
title: '分享到朋友圈的标题',
query: 'a=1&b=2',
imageUrl: 'https://example.com/timeline.png'
};
});
return <View>内容</View>;
}
8. Taro.useReady
作用 :监听页面初次渲染完成(onReady)事件。
应用场景:页面渲染完成后执行某些操作,比如获取节点信息、初始化动画等。
用法示例:
jsx
import { useReady } from '@tarojs/taro';
function MyPage() {
useReady(() => {
console.log('页面初次渲染完成');
// 可以在这里获取DOM信息、初始化动画等
});
return <View>内容</View>;
}
9. Taro.useUnload
作用 :监听页面卸载(onUnload)事件。
应用场景:页面被销毁时清理资源,比如清除定时器、取消网络请求等。
用法示例:
jsx
import { useUnload } from '@tarojs/taro';
function MyPage() {
useUnload(() => {
console.log('页面被卸载');
// 清理定时器、取消请求等
});
return <View>内容</View>;
}
总结
Taro 的生命周期相关 Hooks API 让开发者可以像写 React 组件一样,优雅地管理页面的各类生命周期事件。合理使用这些 API,可以让你的 Taro 项目结构更清晰、逻辑更分明、代码更易维护。建议在实际开发中,根据页面和业务需求,灵活选择和组合这些生命周期 API。
参考文档: