微信小程序开发知识整理

225 阅读3分钟

微信小程序开发知识整理

前言:用于自己记录整理一些前端开发微信小程序中常用的点。

1.使用node安装vant Weapp.

vant Weapp官网地址:vant Weapp

  • 在终端中:npm i @vant/weapp -S --production

  • 在微信开发者工具中,构建npm

  • 在微信开发者工具中,点击详情-本地设置,勾选使用npm模版

  • 文件夹中生成以下文件:

  • 将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以去除,不关闭将造成部分组件样式混乱。

  • 引入组件: 按官网建议,在每个页面的json中引入所需组件:

2.升级vant weapp。

开发中发现有些组件引入无效,发现是版本1.0以下,那么进行vant weapp的升级。步骤:先卸载再安装,安装完成后记得再构建一次npm。

  • npm uninstall vant;
  • npm i @vant/weapp -S --production; 如果命令行删不了旧版本,那么粗暴一点的方法:

查看package.json,删除其中的其余版本,只留下需要的,然后使用npm install安装,再构建一下npm。

3.app.json;

按照官网建议使用:微信小程序-全局配置

4.点击带参数

在点击的节点上,使用data-xx来绑定需要的参数: 如:在view这个节点绑定bindtap事件为toDetail,需要的参数id,使用data-id绑定:

<view bindtap="toDetail" data-id="{{111}}"><view>

在js中,toDetail接收参数event:

toDetail(e) {
  console.log(e);
  let id = e.currentTarget.dataset.id;
}

console.log(e)的截图:

4.页面跳转带参数(wx.navigateTo):

小程序中页面栈最多十层。

  • 传递字符串:参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 '/pages/index/index?value1=hello&value2=world' 传递页面:
toDetail(e) {
  var id = 111;
  var name = "张三"
  wx.navigateTo({
    url: '../productDetail/productDetail?id=' + id + "&name=" + name
  })
},

接收页面,在onLoad函数中接收:

onLoad: function (options) {
//所有options中出来的都是字符类型,如果传递的是布尔类型的,需要(options.isShow == 'true') ? true : false 来处理;
//如果传递的是整型,那么需要用parseInt(options.num)来处理;
  var params = {
    id: options.id, 
    name: options.name
  }
  this.setData({
    params: params
  })
}
  • 传递对象或数组:需要通过JSON.stringify将对象转换为字符串传递,接收时需要通过JSON.parse将字符串转换为对象 传递页面:
toDetail(e) {
  var item = {id: 111, name: "张三"}
  wx.navigateTo({
    url: '../productDetail/productDetail?item=' + JSON.stringify(item)
  })
},

接收页面:

onLoad: function (options) {
  var item = JSON.parse(options.itemthis.setData({
    params: item
  })
}
  • 对象或数组中包含地址时,如?,&等符号,对象/数组先要通过JSON.stringify转化为字符串再通过encodeURIComponent编码,接收时,先通过decodeURIComponent解码再通过JSON.parse转换为JSON格式的对象/数组; 传递页面:
toDetail(e) {
  var obj = {id: 111, name: "张三"};
  var item = JSON.stringify(obj);//先转为字符串
  wx.navigateTo({
    url: '../productDetail/productDetail?item=' + encodeURIComponent(item) //再编码
  })
},

接收页面:

onLoad: function(options) {
    var item =JSON.parse(decodeURIComponent(options.item))
    this.setData({
      params: obj
    })
  }

5.在js中引入Toast组件路径;

官网:import Toast from 'path/to/@vant/weapp/dist/toast/toast';

按照官网的引入报错,百度一番后这样引入: 我的页面:import Toast from '@vant/weapp/toast/toast';

6.Dialog组件,点击确定后异步关闭,怎么关闭默认的按钮loading样式?

<van-dialog
use-slot
title="弹窗标题"
show="{{ show }}"
show-cancel-button
cancel-button-text="返回"
bind:cancel="goBack"
bind:confirm="confirm" 
confirm-button-color="#409EFF"
async-close="{{true}}" //打开异步关闭
>
  <view>自定义弹窗内容</view>
</van-dialog>

在确认的点击事件中,使用e.detail.dialog.stopLoading();

confirm(e) {
  e.detail.dialog.stopLoading()
}

7.修改data中对象的某一个值。

data: {
  form: {
    name: "",
    age: ""
  }
},
nameChange(){
  this.setData({
   'form.name': "张三" //
  })
}