Buildfire navigateTo跳转付费插件时queryString丢失问题咨询
问题原因
付费插件的权限校验重定向逻辑默认不会透传query参数,Buildfire近期对付费插件的权限校验逻辑做了迭代,之前默认透传query的规则被修改,所以会出现你之前功能正常、现在参数丢失的情况,和你本地的导航代码无关。
解决方案
方案1(官方推荐,最稳定)
使用Buildfire内置的导航状态state传递参数,该参数存储在平台的导航上下文里,不会被重定向逻辑抹除:
- 跳转侧代码修改为:
buildfire.navigation.navigateTo({ pluginId: pluginId, instanceId: recipe.instanceId, state: { recipeId: recipe.recipeId }, });
- 目标插件侧取参数:
buildfire.navigation.getState((err, state) => { if (err) return console.error('获取导航参数失败', err); if (state?.recipeId) { // 执行你的自定义逻辑,直接定位到对应recipe条目 } });
方案2(保留queryString的场景)
进入付费插件的实例配置页,找到「权限校验重定向保留参数」的开关,开启后平台会自动在权限校验通过后的重定向请求里带上原始query参数,不需要修改现有代码。
方案3(兜底方案)
如果前两个方案都不适用,可以用平台本地存储做临时中转:
- 跳转前存储参数:
buildfire.localStorage.setItem('nav_recipeId', recipe.recipeId) - 目标插件初始化时取参数,用完删除避免后续冲突:
const recipeId = buildfire.localStorage.getItem('nav_recipeId'); if (recipeId) { buildfire.localStorage.removeItem('nav_recipeId'); // 执行对应逻辑 }
内容的提问来源于stack exchange,提问作者code1cation
相关产品推荐
相关产品推荐

