feat: 预加载优化、nav-bar 箭头居中优化
This commit is contained in:
+10
-2
@@ -60,11 +60,19 @@
|
||||
"preloadRule": {
|
||||
"pages/home/home": {
|
||||
"network": "all",
|
||||
"packages": ["mathPages", "focusPages"]
|
||||
"packages": ["mathPages", "pinyinPages", "chinesePages"]
|
||||
},
|
||||
"pages/category/category": {
|
||||
"network": "all",
|
||||
"packages": ["focusPages", "englishPages"]
|
||||
"packages": ["focusPages", "englishPages", "chinesePages"]
|
||||
},
|
||||
"pages/age/age": {
|
||||
"network": "all",
|
||||
"packages": ["focusPages", "englishPages", "pinyinPages"]
|
||||
},
|
||||
"pages/favorites/favorites": {
|
||||
"network": "all",
|
||||
"packages": ["focusPages", "mathPages", "chinesePages"]
|
||||
},
|
||||
"pages/profile/profile": {
|
||||
"network": "all",
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
font-size: 40rpx;
|
||||
color: @color-nav-title;
|
||||
line-height: 1;
|
||||
margin-top: 4rpx;
|
||||
}
|
||||
|
||||
.nav-bar__title {
|
||||
|
||||
@@ -54,7 +54,8 @@ Component({
|
||||
},
|
||||
methods: {
|
||||
onTap() {
|
||||
this.triggerEvent('tap', {
|
||||
// 使用 cardtap 避免与原生 tap 同名,防止安卓上父级 bindtap 重复触发 navigateTo
|
||||
this.triggerEvent('cardtap', {
|
||||
title: this.data.title,
|
||||
path: this.data.path,
|
||||
});
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
class="worksheet-card worksheet-card--{{variant}}"
|
||||
hover-class="worksheet-card--active"
|
||||
hover-stay-time="100"
|
||||
bindtap="onTap">
|
||||
catchtap="onTap">
|
||||
<block wx:if="{{variant === 'track'}}">
|
||||
<view class="worksheet-card__top">
|
||||
<image
|
||||
|
||||
@@ -19,7 +19,15 @@ const TAB_BAR_PATHS = new Set([
|
||||
'/pages/profile/profile',
|
||||
]);
|
||||
|
||||
let _navigating = false;
|
||||
|
||||
function releaseNavigateLock() {
|
||||
_navigating = false;
|
||||
}
|
||||
|
||||
function navigateByPath(path?: string, fallbackTitle?: string) {
|
||||
if (_navigating) return;
|
||||
|
||||
const p = String(path || '').trim();
|
||||
if (!p) {
|
||||
wx.showToast({
|
||||
@@ -37,11 +45,22 @@ function navigateByPath(path?: string, fallbackTitle?: string) {
|
||||
query,
|
||||
);
|
||||
}
|
||||
wx.switchTab({ url: basePath });
|
||||
_navigating = true;
|
||||
wx.switchTab({
|
||||
url: basePath,
|
||||
complete: releaseNavigateLock,
|
||||
fail: releaseNavigateLock,
|
||||
});
|
||||
return;
|
||||
}
|
||||
wx.navigateTo({ url: p }).catch((err) => {
|
||||
_navigating = true;
|
||||
wx.navigateTo({
|
||||
url: p,
|
||||
complete: releaseNavigateLock,
|
||||
fail: (err) => {
|
||||
console.error('navigateByPath error:', err);
|
||||
releaseNavigateLock();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
path="{{item.path}}"
|
||||
data-title="{{item.title}}"
|
||||
data-path="{{item.path}}"
|
||||
bindtap="onTapCard"
|
||||
bind:cardtap="onTapCard"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -158,6 +158,8 @@ function formatDateKey(date: Date): string {
|
||||
}
|
||||
|
||||
Page({
|
||||
_navigating: false,
|
||||
|
||||
data: {
|
||||
favScrollHeight: 0,
|
||||
activeTab: 'favorites' as FavoritesTab,
|
||||
@@ -240,12 +242,23 @@ Page({
|
||||
},
|
||||
|
||||
onCardTap(e: WechatMiniprogram.TouchEvent) {
|
||||
if (this._navigating) return;
|
||||
|
||||
const path = e.currentTarget.dataset.path as string | undefined;
|
||||
if (!path) {
|
||||
wx.showToast({ title: '该练习已下架', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
wx.navigateTo({ url: path });
|
||||
this._navigating = true;
|
||||
wx.navigateTo({
|
||||
url: path,
|
||||
complete: () => {
|
||||
this._navigating = false;
|
||||
},
|
||||
fail: () => {
|
||||
this._navigating = false;
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
onSearchTap() {
|
||||
|
||||
@@ -71,7 +71,15 @@ function sortSectionsByTabs(
|
||||
}));
|
||||
}
|
||||
|
||||
let _navigating = false;
|
||||
|
||||
function releaseNavigateLock() {
|
||||
_navigating = false;
|
||||
}
|
||||
|
||||
function navigateByPath(path?: string, fallbackTitle?: string) {
|
||||
if (_navigating) return;
|
||||
|
||||
if (!path) {
|
||||
wx.showToast({
|
||||
title: fallbackTitle ? `${fallbackTitle} 即将上线` : '即将上线',
|
||||
@@ -96,11 +104,22 @@ function navigateByPath(path?: string, fallbackTitle?: string) {
|
||||
query,
|
||||
);
|
||||
}
|
||||
wx.switchTab({ url: basePath });
|
||||
_navigating = true;
|
||||
wx.switchTab({
|
||||
url: basePath,
|
||||
complete: releaseNavigateLock,
|
||||
fail: releaseNavigateLock,
|
||||
});
|
||||
return;
|
||||
}
|
||||
wx.navigateTo({ url: path }).catch((err) => {
|
||||
_navigating = true;
|
||||
wx.navigateTo({
|
||||
url: path,
|
||||
complete: releaseNavigateLock,
|
||||
fail: (err) => {
|
||||
console.error('navigateByPath error:', err);
|
||||
releaseNavigateLock();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
path="{{item.path}}"
|
||||
data-title="{{item.title}}"
|
||||
data-path="{{item.path}}"
|
||||
bindtap="onTapCard" />
|
||||
bind:cardtap="onTapCard" />
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
Reference in New Issue
Block a user