uniapp踩坑之小程序:使用async调用接口并且判断点击事件传参

本文主要探讨了在小程序中遇到的参数传递问题,指出常规的web页面传参方式在小程序中可能不适用,导致400 Bad Request错误。作者提供了一个小Demo,展示了如何通过在调用API时使用解构赋值来处理参数。在按钮点击事件中,获取ID并根据是否有值决定是否传参给接口。这种方法确保了在小程序中正确调用接口。

注意!!:小程序不兼容直接在函数上传参,使用时需要在调用api接口处内置解构传值

bug如下,‘GET http://123.123.123.xxx/api/xxx/xxx/List?Id=null 400 (Bad Request)’,说明web页传参的方法在小程序里不好使,所以我们要使用特别的处理方法进行传参


 小dome,逻辑思路如下

//html

<!-- 数据列表 -->
<view v-for="item in this.dataList.demo" :key="item.id">
    //根据后台返回的字段取
   <text>{{item.xxx}}</text>

   <text>{{item.yyy}}</text>



    <!-- 按钮事件,点击当前的按钮获取参数 -->
    <view>
       <button @click="clickDemo(item)">demo按钮<button>
    </view>
</view>

//data
dataList:{

   demo:[] //数据
},

clickId:null, //点击时获取id


//点击弹窗选项的企业接口
async getList() {

  
 //利用三目运算符进行判断,选中就传参id调接口,没有选中就不传id调接口
 let res =this.clickId? await List({ id: this.clickId }):await List();;

 if (this.clickId) {
    // console.log('已点,调用有参数接口');
   this.dataList.demo = res.data.data;
  } else {
    // console.log('没点,调用无参数接口');
   this.dataList.demo = res.data.data;
      }
      
  },


//点击事件
clickDemo(e){
   //取这个按钮的ID
   this.clickId = e.id

   //将id值传给接口函数获取后端数据
   this.getList(e.id)
},

作者上一篇文章,

uniapp踩坑:页面视图不更新,拿不到最新数据_意初的博客-优快云博客使用this.$forceUpdate()里包裹关于视图的数据即可。小Demo,大致思路如下。https://blog.youkuaiyun.com/weixin_43928112/article/details/127866933

UniApp 是一款基于 Vue.js 的跨平台框架,它允许开发者编写一次代码,生成适用于 Web、H5、iOS、Android 等多种平台的应用。如果你想要在 UniApp调用微信小程序的隐私接口,首先你需要确保你的项目支持微信小程序的能力。 微信小程序提供了丰富的隐私管理接口,例如 `wx.getSetting` 和 `wx.requestPermission` 来获取用户权限设置或请求特定权限(如地理位置、相机等)。以下是基本步骤: 1. **引入依赖**:在 UniAppVue 组件中,通过导入相应的微信小程序 API,比如: ```javascript import wx from '@/utils/wx-jssdk' ``` 2. **初始化 JSSDK**:在项目的 App.vue 或全局组件中,配置并初始化微信 JSSDK,确保微信小程序的权限管理功能可用: ```javascript created() { wx.config({ debug: false, // 开发环境开关 appId: 'your_app_id', // 小程序的唯一标识 timestamp: '', // 这里由服务器返回,表示接口调用时间戳 nonceStr: '', // 这里由服务器返回,表示随机字符串 signature: '', // 这里由服务器返回,表示签名 jsApiList: ['getSetting', 'requestPermission'] // 需要使用接口列表 }) wx.ready(() => { // 初始化完成后的回调 }) } ``` 3. **调用接口**:当你需要访问用户隐私信息时,可以使用上述接口: ```javascript async getUserSetting(key) { try { const res = await wx.getSetting({ key: key }) // 比如 key 可能是 "scope.userInfo" console.log(res) } catch (error) { console.error('Error:', error) } } async requestPermission(permission) { return new Promise((resolve, reject) => { wx.requestPermission({ permission, success: resolve, fail: reject }) }) } ``` 记得替换 `your_app_id` 为你实际的小程序 appID,并在服务器端处理签名的生成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值