留下用户不易,且行且珍惜
小程序推送用户消息,可以模板创建一个form表单(最好用系统自带的button)
<form @submit="handlePush" report-submit='true'>
<button formType="submit">推送消息</button>
</form>
小程序的formId需要尽可能的在用户交互比较频繁的操作点上面加好埋点,所以就会在页面的多个地方加form。之前看网上的做法上有一种是在一个button上循环嵌套n个form表格,当用户点击一次之后就可以一次性拿到这n个formId值。实际上这种做法目前好像并不凑效,应该被微信和谐了,你会发现嵌套再多层最终拿到的formId值都是一样的,所以嵌套form的作用就不大了。
另外,在小程序的主入口页,因为这里是uni-app开发,app.vue为主入口,要拿取formId值的话首先肯定会想到在这里拿formId,这样就一劳永逸了。通常做法就是隐藏一个form表单,然后在生命周期里trigger表单提交事件。但实际是微信不支持更不建议dom操作...
综上,还是老老实实的多加几个点吧。当然,偷懒还是要偷的,加个minxins吧。
/** form-id-mixins.js **/
export default {
methods: {
getFormIdData(formId, type = 1) {
// 加type参数是为了有效区分都为同一类型的formId
const params = {
formId,
type
}
// 传值给后台的API
Api.getFormId(params)
.then(res => {
console.log('success')
})
},
}
}
引用就简单了...
import mixin from '@/form-id-mixins.js'
export default {
mixins: [mixin],
methods: {
handlePush(e) {
this.getFormIdData(e.detail.formId)
}
}
}