亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Taro的微信小程序模板消息-獲取formId功能模塊封裝實踐

 更新時間:2019年07月15日 11:45:17   作者:JustBeCoder  
這篇文章主要介紹了基于Taro的微信小程序模板消息-獲取formId功能模塊封裝實踐,小程序提供了一種能力-模板消息,基于微信的通知渠道,我們?yōu)殚_發(fā)者提供了可以高效觸達用戶的模板消息能力,以便實現(xiàn)服務的閉環(huán)并提供更佳的體驗,需要的朋友可以參考下

前言

在微信小程序中,小程序提供了一種能力-模板消息,官方文檔是這樣描述的:“基于微信的通知渠道,我們?yōu)殚_發(fā)者提供了可以高效觸達用戶的模板消息能力,以便實現(xiàn)服務的閉環(huán)并提供更佳的體驗?!?br />

看圖說話:

下發(fā)模板消息效果圖

這無疑又給小程序提供了與用戶進行通知、反饋的新能力,但是小程序為了防止模板消息對用戶造成信息轟炸,影響用戶體驗,也設置了一些規(guī)矩:

  • 模板推送位置:服務通知
  • 模板下發(fā)條件:用戶本人在微信體系內與頁面有交互行為后觸發(fā)
  • 模板跳轉能力:點擊查看詳情僅能跳轉下發(fā)模板的該帳號的各個頁面

那我們想通過小程序給用戶發(fā)送模板消息需要怎么做呢?

  • 用戶必須與小程序發(fā)生了頁面的交互行為,如支付、提交表單
  • 支付會產(chǎn)生一個prepay_id的標記,提交表單會產(chǎn)生一個formId的標記
  • 服務端根據(jù)prepay_id或formId來發(fā)送模板消息

無論是prepay_id還是formId都只有7天的有效期

那么問題來了?

如果用戶在使用小程序的過程中,沒有在7天內進行一些信息提交操作,或者是支付操作,那么我們就無法獲取prepay_id,formId了,但是實際的業(yè)務上卻需要給用戶發(fā)送一些模板消息,已達到某些推廣或通知的效果。prepay_id必須是支付的時候才能產(chǎn)生,這個無需多言。今天胡哥就給大家來介紹下,如何在小程序中盡可能的獲取formId,以達到讓服務端有盡可能多的formId來發(fā)送模板消息。

獲取formId的原理

  • 必須是form組件,并且需聲明屬性report-submit=",表示需要發(fā)送模板消息,同時監(jiān)聽bindsubmit事件;
  • 必須在該form組件中,有button組件,同時該button組件需聲明屬性form-type="submit"。

上代碼 --- 小程序原生代碼演示

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

獲取formId模塊的封裝

基于小程序獲取formId的原理,我們可以變相考慮:

  • 只要用戶觸發(fā)了符合特定條件的包含button組件的form組件的bindSubmit事件,就可以獲取到formID;
  • 同時借助CSS樣式,我們可以將form組件和button組件設置成隱形的,不可見但確真實存在;
  • 將隱形的button組件覆蓋在真實的組件上,當點擊真實組件時,實際上就觸發(fā)了button的點擊,同時用戶是無感知的。

這里是重點,圈起來,一定會考的!

基于Taro的獲取formId功能模塊封裝實踐

設計獨立的功能模塊,以便供其他模塊方便調用,項目目錄結構

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

src/components/formId/index.js

/**
 * 封裝FormId組件,以提供向服務端發(fā)送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)
  // 模態(tài)框展示
  Taro.showModal({
   title: 'formId',
   content: e.detail.formId,
   showCancel: false
  })
  /**
  * 注意: 
  * 實際封裝中,直接將獲取的formId發(fā)送到后端服務器即可,無需彈框提示、控制臺打印,此處只是為了給小伙伴展示效果
  */ 
 }
 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效果圖

后記

以上就是胡哥今天給大家分享的內容,喜歡的小伙伴記得收藏、轉發(fā)、點擊右下角按鈕在看,推薦給更多小伙伴呦,歡迎多多留言交流...

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • echarts橫向柱狀圖簡單實現(xiàn)方法

    echarts橫向柱狀圖簡單實現(xiàn)方法

    這篇文章主要給大家介紹了關于echarts橫向柱狀圖簡單實現(xiàn)的相關資料,ECharts是百度前端開發(fā)部開發(fā)的一個開源可視化庫,它可以幫助開發(fā)者輕松的實現(xiàn)各種數(shù)據(jù)可視化,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • 微信小程序tabbar底部導航

    微信小程序tabbar底部導航

    這篇文章主要為大家詳細介紹了微信小程序重寫tabbar底部導航,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 有關JS中的0,null,undefined,[],{},'''''''''''''''',false之間的關系

    有關JS中的0,null,undefined,[],{},'''''''''''''''',false之間的關系

    這篇文章主要介紹了有關JS中的0,null,undefined,[],{},'',false之間的關系,需要的朋友可以參考下
    2017-02-02
  • Javascript動態(tài)綁定事件的簡單實現(xiàn)代碼

    Javascript動態(tài)綁定事件的簡單實現(xiàn)代碼

    Javascript事件綁定的方法很多,很靈活。不過,作為比較簡單的動態(tài)綁定,下面的代碼看似正確,但得不到預期的效果。
    2010-12-12
  • js不同客戶端顯示不同廣告(pc端+移動端+微信端)

    js不同客戶端顯示不同廣告(pc端+移動端+微信端)

    這篇文章主要介紹了js不同客戶端顯示不同廣告(pc端+移動端+微信端),比較適合自適應網(wǎng)站的廣告,需要的朋友可以參考下
    2023-02-02
  • 深入理解JavaScript中為什么string可以擁有方法

    深入理解JavaScript中為什么string可以擁有方法

    下面小編就為大家?guī)硪黄钊肜斫釰avaScript中為什么string可以擁有方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • 一文解析JavaScript模塊構建的三種方式

    一文解析JavaScript模塊構建的三種方式

    在現(xiàn)代Web開發(fā)中,JavaScript庫的構建和打包是一個至關重要的環(huán)節(jié),不同的構建方式可以影響到庫的性能、可維護性和適用性,本文將深入剖析三種主要的JavaScript模塊構建方式:CommonJS、ES模塊和AMD,我們將深入探討它們的工作原理、適用場景以及示例代碼
    2023-08-08
  • javascript實現(xiàn)的柱狀統(tǒng)計圖表

    javascript實現(xiàn)的柱狀統(tǒng)計圖表

    下面是完成后的預覽圖,可以看到,繪制一個表格,耗時0.005毫秒,也就是200分之一秒。效率我還是比較滿意的!
    2010-07-07
  • JavaScript庫 開發(fā)規(guī)則

    JavaScript庫 開發(fā)規(guī)則

    1. 保持無侵入性,標記不想知道你的JavaScript代碼;2. 嚴禁修改和擴展Object.prototype!;3. 對JavaScript內建對象的擴展越少越好;4. 跟隨標準;5. 或著跟隨主導 ;6. 保持靈活;7. 管理內存;8. 淘汰瀏覽器嗅探;9. 小巧更佳……
    2009-01-01
  • Javascript驗證上傳圖片大小[前臺處理]

    Javascript驗證上傳圖片大小[前臺處理]

    在做上傳圖片的時候,如果不限制上傳圖片大小,后果非常的嚴重。解決這個問題有兩種方式:后臺處理、前臺處理
    2014-07-07

最新評論