最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

基于Taro的微信小程序模板消息-获取formId功能模块封装实践

来源:动视网 责编:小采 时间:2020-11-27 21:53:45
文档

基于Taro的微信小程序模板消息-获取formId功能模块封装实践

基于Taro的微信小程序模板消息-获取formId功能模块封装实践:前言 在微信小程序中,小程序提供了一种能力-模板消息,官方文档是这样描述的:基于微信的通知渠道,我们为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验。 看图说话: 下发模板消息效果图 这无疑又给小程序提供了
推荐度:
导读基于Taro的微信小程序模板消息-获取formId功能模块封装实践:前言 在微信小程序中,小程序提供了一种能力-模板消息,官方文档是这样描述的:基于微信的通知渠道,我们为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验。 看图说话: 下发模板消息效果图 这无疑又给小程序提供了


那么问题来了?

如果用户在使用小程序的过程中,没有在7天内进行一些信息提交操作,或者是支付操作,那么我们就无法获取prepay_id,formId了,但是实际的业务上却需要给用户发送一些模板消息,已达到某些推广或通知的效果。prepay_id必须是支付的时候才能产生,这个无需多言。今天胡哥就给大家来介绍下,如何在小程序中尽可能的获取formId,以达到让服务端有尽可能多的formId来发送模板消息。

获取formId的原理

  • 必须是form组件,并且需声明属性report-submit=",表示需要发送模板消息,同时监听bindsubmit事件;
  • 必须在该form组件中,有button组件,同时该button组件需声明属性form-type="submit"。
  • 上代码 --- 小程序原生代码演示

    <form report-submit="true" bindSubmit="submitEvent">
     <button open-type="submit">提交</button> 
    </form>

    获取formId模块的封装

    基于小程序获取formId的原理,我们可以变相考虑:

  • 只要用户触发了符合特定条件的包含button组件的form组件的bindSubmit事件,就可以获取到formID;
  • 同时借助CSS样式,我们可以将form组件和button组件设置成的,不可见但确真实存在;
  • 将的button组件覆盖在真实的组件上,当点击真实组件时,实际上就触发了button的点击,同时用户是无感知的。
  • 这里是重点,圈起来,一定会考的!

    基于Taro的获取formId功能模块封装实践

    设计的功能模块,以便供其他模块方便调用,项目目录结构

    src/
     components/
     formId/
     index.js
     index.scss

    src/components/formId/index.js

    /**
     * 封装FormId组件,以提供向服务端发送formId的功能
     */
    import Taro, { Component } from '@tarojs/taro'
    import { View, Form } from '@tarojs/components'
    import './index.scss'
    
    export default class FormId extends Component {
     constructor (props) {
     super(props)
     }
     /**
     * formSubmit()
     * @description 提交formId到后端服务器
     * @param {*} e event对象
     */
     formSubmit (e) {
     // 打印在控制台
     console.log('formId:', e.detail.formId)
     // 模态框展示
     Taro.showModal({
     title: 'formId',
     content: e.detail.formId,
     showCancel: false
     })
     /**
     * 注意: 
     * 实际封装中,直接将获取的formId发送到后端服务器即可,无需弹框提示、控制台打印,此处只是为了给小伙伴展示效果
     */ 
     }
     render () {
     let { children } = this.props
     return (
     <Form className="form" reportSubmit="true" onSubmit={this.formSubmit}>
     { children }
     <Button className="form-btn" formType="submit"></Button>
     </Form>
     )
     }
    }

    src/components/formId/index.scss

    非常重要的问题:就是隐藏样式,让用户不可见、无感知,但实际确实存在的。

    .form {
     position: relative;
     display: flex;
     .form-btn {
     position: absolute;
     left: 0;
     top: 0;
     width: 100%;
     height: 100%;
     background: transparent;
     outline: none;
     padding: 0;
     box-sizing: border-box;
     &::after {
     content: "";
     border: none;
     }
     }
    }

    src/pages/index/index.js 调用formId模块

    在任意想使用formId的其他模块中引入,调用即可

    import Taro, { Component } from '@tarojs/taro'
    import { View, Button } from '@tarojs/components'
    import FormId from '../../components/formId'
    
    export default class Index extends Component {
     render () {
     return (
     <View className="index">
     {/* 调用FormId组件 */}
     <FormId>
     {/* 页面中任意元素 */}
     <Button>其他元素</Button>
     </FormId>
     </View>
     )
     }
    }

    效果图

    获取formId效果图

    后记

    文档

    基于Taro的微信小程序模板消息-获取formId功能模块封装实践

    基于Taro的微信小程序模板消息-获取formId功能模块封装实践:前言 在微信小程序中,小程序提供了一种能力-模板消息,官方文档是这样描述的:基于微信的通知渠道,我们为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验。 看图说话: 下发模板消息效果图 这无疑又给小程序提供了
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top