Taro 小程序跳转页面选择带数据返回上一页面
import { VipCodeResponse } from '@/modules/mine/model/UserMemberProperty';
import { buildQueryParams } from '@/utils/query.utils';
import Taro from '@tarojs/taro';
type MemberCartInfo = VipCodeResponse & { isEquityCard?: boolean };
/** 创建跳转页面选择辅助函数 */
const createChooseHelperEvents = <T, F>({
url,
name
}: {
/** url 参数 */
url: string;
/** 监听器名称 */
name: string;
}): {
/** 选择页面函数 */
choose: (data: T) => void;
/** 跳转到选择页面函数 */
toChoose: (params: F) => Promise<T>;
} => {
return {
choose: (data) => {
const pages = Taro.getCurrentPages();
const currentPage = pages[pages.length - 1];
const eventChannel = currentPage.getOpenerEventChannel();
eventChannel.emit(name, data);
},
toChoose: (params) => {
return new Promise<T>((resolve, reject) => {
Taro.navigateTo({
url: `${url}?${buildQueryParams(params)}`,
events: {
[name]: (data: T) => {
data ? resolve(data) : reject();
}
}
});
});
}
};
};
const { choose: chooseMembershipCard, toChoose: toChooseMembershipCard } = createChooseHelperEvents<
MemberCartInfo,
any
>({
url: '/pages/mine/membership/choose-membership-card/index',
name: 'chooseMembershipCard'
});
export { chooseMembershipCard, toChooseMembershipCard };
本文来自博客园,作者:懒惰ing,转载请注明原文链接:https://www.cnblogs.com/landuo629/p/18463745
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器