微信小程序-3

news2024/11/19 2:29:53

一、交互

API - - - 界面 - - - 交互

功能:提示 是否删除

1.wx.showToast 显示消息提示框

<button type="primary" bindtap='clickBtn'>按钮</button>
<input style="margin: 20rpx;height: 60rpx;background: gainsboro;" type="text"/>
  clickBtn(){
    wx.showToast({
      title:'加载中...',
      icon:'loading',
      // image的优先级大于icon
      duration:5000,
      // mask 遮罩层,为true时不可操作界面,页面也不可滚动
      mask:true,
      // 弹窗出现时就会调用
      success:res=>{
      	console.log(res);
      }
    })
  },

2.wx.showModal 显示模态对话框

  clickBtn(){
    wx.showModal({
      title:'是否删除',
      content:'删除之后不可恢复,请谨慎删除',
      // showCancel:false,
      // 箭头函数,不会出现指向问题
      success:res=>{
        console.log(res);
        // comfirm值为确认返回true和取消false
      }
    })
  },

content和editable不要一起使用

  clickBtn(){
    wx.showModal({
      title:'请输入验证码',
      editable:true,
      placeholderText:'请输入...',
      success:res=>{
        console.log(res);
        // comfirm值为true,content值为用户输入的内容
      }
    })
  },

3.wx.showLoading 显示 loading 提示框

  onLoad: function (options) {
    // 一进入页面就会显示
    wx.showLoading({
      title: '加载中...',
      // 加载中不可对页面进行操作
      mask:true,
    })
	// 定时器,1秒后隐藏loading提示框
    setTimeout(()=>{
      wx.hideLoading()
    },1000)
  },

3.wx.showActionSheet 显示操作菜单

  clickBtn(){
    wx.showActionSheet({
      itemList: this.data.listArr,
      success: (res)=> {
        // res.tapIndex得到索引,this.data.listArr是列表
        console.log(this.data.listArr[res.tapIndex])
      },
      fail: (res)=> {
        console.log(res.errMsg)
      }
    })
  },

二、导航栏api接口

平常在json里设置

"navigationBarTitleText":"标题"
  onLoad: function (options) {
    // 动态设置当前页面的标题
    wx.setNavigationBarTitle({
      title: '标题名',
    })
    // 设置页面导航条颜色
    wx.setNavigationBarColor({
      backgroundColor: '#ff0000',
      frontColor: '#000000',
    })
    // 在当前页面显示导航条加载动画
    wx.showNavigationBarLoading()
    setTimeout(() => {
      // 在当前页面隐藏导航条加载动画
      wx.hideNavigationBarLoading()
    }, 2000);
    // 隐藏返回首页按钮
    wx.hideHomeButton()
  },

三、json配置

指南 - - - 配置小程序
框架 - - - 小程序配置 - - - 全局配置app.json - - - 页面配置.json

注意:json文件里不能有注释

  // entryPagePath指定首页,默认index
  "entryPagePath": "pages/demo/demo",
  "pages":[
    "pages/index/index",
    "pages/logs/logs",
    "pages/demo/demo"
  ],

单独页面不显示导航栏

  // 导航栏样式
  // custom 自定义导航栏,只保留右上角胶囊按钮
  "navigationStyle": "custom"

下拉刷新 背景颜色

  // 是否开启当前页面下拉刷新
  "enablePullDownRefresh": true,
  // 刷新窗口的背景色
  "backgroundColor": "#8bc34a",
  // 下拉 loading 的样式(三个点),仅支持 dark / light
  "backgroundTextStyle":"light"

四、tabBar

图标 iconfont 官方图标库 收藏量 ctrl+F搜索 home

  "tabBar": {
    // 字体颜色
    "color": "#cdcdcd",
    // 选中时的颜色
    "selectedColor": "#00ffff",
    "list": [{
      "text": "首页",
      "pagePath": "pages/index/index",
      "iconPath": "/static/icon/home.png",
      "selectedIconPath": "/static/icon/home-fill.png"
    },{
      "text": "我的",
      "pagePath": "pages/logs/logs",
      "iconPath": "/static/icon/user.png",
      "selectedIconPath": "/static/icon/user-lan.png"
    }]
  },

五、api中navigate路由接口与组件的关系

组件 - - - 导航 - - - navigator

<navigator url="/pages/test/test">测试页面</navigator>
<!-- reLaunch关闭所有页面,打开到应用内的某个页面 -->
<!-- 可携带参数,在左下角页面路径那打开页面参数 id=123 -->
<navigator url="/pages/test/test?id=123" open-type="reLaunch">测试页面</navigator>
<!-- 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,没有携带参数 -->
<navigator url="/pages/test/test?id=123" open-type="switchTab">测试页面</navigator>

或盒子,使用点击事件

<view bindtap="goTest" style="width: 100rpx;height: 100rpx;background: greenyellow;"></view>
  goTest(){
    // wx.reLaunch 关闭所有页面,打开到应用内的某个页面
    wx.reLaunch({
      url: '/pages/test/test',
    })
  },

wx.switchTab - - - 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
wx.redirectTo - - - 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
wx.navigateTo - - - 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层
wx.navigateBack - - - 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层

六、request请求

1.获取网络请求

<view class="out">
  <view class="box" wx:for="{{listArr}}" wx:key="id">
    <view class="pic">
      <image src="{{item.url}}" mode="aspectFit"/>
    </view>
    <view class="name">姓名:{{item.id}}</view>
  </view>
</view>
.out{padding: 30rpx;}
.out .box{width: 100%;height: 460rpx;border: 1px solid #eee;margin-bottom: 30rpx;}
.out .box .pic{width: 100%;height: 400rpx;}
.out .box .pic image{width: 100%;height: 100%;}
.out .box .name{text-align: center;line-height: 60rpx;}
  data: {
    listArr:[]
  },
  onLoad(options) {
    this.getData();
  },
  // 随机获取猫咪的网络请求
  getData(){
    // console.log(123)
    wx.request({
      // 可以改limit后的数字
      url: 'https://api.thecatapi.com/v1/images/search?limit=2',
      // 需要再详情-本地设置-开启不校验合法域名
      success:res=>{
        console.log(res)
        this.setData({
          listArr:res.data
        })
      }
    })
  },

2.下拉刷新数据

{
  "usingComponents": {},
  "enablePullDownRefresh": true,
  "backgroundColor": "#000",
  "backgroundTextStyle":"light"
}
  data: {
    listArr:[]
  },
  onLoad(options) {
    wx.showLoading({
      title: '加载中...',
      mask:true
    })
    this.getData();
  },
  getData(){
    // console.log(123)
    wx.request({
      url: 'https://api.thecatapi.com/v1/images/search?limit=2',
      // 需要再详情-本地设置-开启不校验合法域名
      success:res=>{
        console.log(res)
        this.setData({
          listArr:res.data
        })
        // 在页面刷新完后 停止页面下拉刷新
        // API --- 界面 --- 下拉刷新
        wx.stopPullDownRefresh()
        // wx.hideLoading()
      },
      // 接口调用结束的回调函数(调用成功、失败都会执行)
      complete:err=>{
        wx.hideLoading()
      }
    })
  },

  onPullDownRefresh() {
    // console.log(123)
    // 先清空数组
    this.setData({
      listArr:[]
    })
    // 下拉刷新,重新获取数据
    this.getData()
  },

3.触底加载更多数据

onReachBottomDistance 触底距离

{
  "usingComponents": {},
  "enablePullDownRefresh": true,
  "backgroundColor": "#000",
  "backgroundTextStyle":"light",
  "onReachBottomDistance": 200
}
// pages/test/test.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    listArr:[]
  },
  onLoad(options) {
    wx.showLoading({
      title: '加载中...',
      mask:true
    })
    this.getData();
  },
  getData(){
    // console.log(123)
    wx.request({
      url: 'https://api.thecatapi.com/v1/images/search?limit=2',
      // 需要再详情-本地设置-开启不校验合法域名
      success:res=>{
        console.log(res)
        let oldData = this.data.listArr
        // let newData = res.data
        // 让老数据追加新数据,新数据在res.data中
        let newData = oldData.concat(res.data)
        this.setData({
          listArr:newData
        })
        // 在页面刷新完后 停止页面下拉刷新
        // API --- 界面 --- 下拉刷新
        wx.stopPullDownRefresh()
        // wx.hideLoading()
      },
      // 接口调用结束的回调函数(调用成功、失败都会执行)
      complete:err=>{
        wx.hideLoading()
        wx.hideNavigationBarLoading()
      }
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // console.log(123)
    // 先清空数组
    this.setData({
      listArr:[]
    })
    // 下拉刷新,重新获取数据
    this.getData()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    wx.showNavigationBarLoading()
    // need重新编译
    console.log('触底了');
    this.getData();
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

4.其他参数

get请求,data传参

  onLoad: function (options) {
    this.getData();
  },
  getData(){
    wx.request({
      url: 'https://api.thecatapi.com/v1/images/search',
      method:'get',
      data:{
        limit:10
      },
      success:res=>{console.log(res)}
    })
  },

post请求

  getData(){
    wx.request({
      url: 'http://jsonplaceholder.typicode.com/posts',
      method:'post',
      // header里的参数在调试器Network下headers的RequestHeaders里可以看到
      header:{'content-type':'application/json','token':123123},
      data:{
        limit:10,
        name:'wangwu'
      },
      success:res=>{console.log(res)}
    })
  },

七、小案例

<!-- 双向绑定model, bindconfirm点击完成按钮/回车时触发 -->
<input type="text" model:value="{{iptVal}}" bindconfirm="onSubmit" placeholder="请输入标题" style="background: #eee;margin: 30rpx;"/>
<view class="box" style="margin: 30rpx;">
  <view class="row" wx:for="{{listArr}}" wx:key="_id" style="border-bottom: 1px solid #eee;padding: 10rpx;">
    <view class="title">标题:{{item.title}}</view>
    <view class="time">时间:{{item.posttime}}</view>
  </view>
</view>
  data: {
    iptVal:'',
    listArr:[]
  },

  onLoad: function (options) {
    this.getData();
  },
  getData(){
    wx.request({
      // url: 'https://console-docs.apipost.cn/preview/8b23f100b39a63c5/617499421662264b',
      url:'https://tea.qingnian8.com/demoArt/get',
      method:'POST',
      header:{'Content-Type':'application/json'},
      data:{
        num:3,
        page:1
      },
      success:res=>{
        console.log(res);
        this.setData({
          listArr:res.data.data
        })
      }
    })
  },
  onSubmit(){
    // console.log(this.data.iptVal);
    wx.request({
      url: 'https://tea.qingnian8.com/demoArt/add',
      method:'POST',
      header:{'Content-Type':'application/json'},
      data:{
        title:this.data.iptVal
      },
      success:res=>{
        console.log(res);
        if(res.data.errCode!=0){
          // 如果没有成功,返回 不执行下面代码
          return;
        }
        this.setData({
          iptVal:''
        })
        this.getData();
        wx.showToast({
          title: res.data.errMsg,
        })
      }
    })
  },

八、自定义组件Component

框架 - - - 框架接口 - - - 自定义组价
新建文件夹(和pages同级),新建文件夹,右键新建Component
在这里插入图片描述

在json中引入component组件

{
  "usingComponents": {
    "MyHeader":"/component/MyHeader/MyHeader"
  }
}
<!--component/MyHeader/MyHeader.wxml-->
<view class="header">
  <view class="big">头部大标题</view>
  <view class="small">小标题</view>
</view>
/* component/MyHeader/MyHeader.wxss */
.header{text-align: center;padding: 30rpx;background: #eee;}
.header .big{font-size: 52rpx;}
.header .small{font-size: 32rpx;margin-top: 20rpx;color: #666;}


修改组件的内容

<!--component/MyHeader/MyHeader.wxml-->
<view class="header">
  <view class="big">头部大标题</view>
  <view class="small">小标题{{name}}</view>
</view>
// component/MyHeader/MyHeader.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    name:{
      type:String,
      value:"-----"
    }
  },

  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {

  }
})

传参,若没有传参,使用默认值value:“-----”,传参使用传参值

<MyHeader name='-首页'></MyHeader>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1099402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度文心一言 VS GPT

更多精华&#xff1a;即兴小索奇 | Link3 相信大家都关注AI&#xff0c;AI大模型已成为了科技领域的新焦点&#xff0c;各大科技巨头都争相推出自家的版本。其中&#xff0c;尤为引人注目的是中国科技巨头百度所推出的文心大模型。然而&#xff0c;即使在这激烈的竞争中&#x…

【数据结构与算法】字符串匹配,BF算法和KMP算法,next数组求法

朴素的模式匹配算法 bf算法 假设在主串S"helloworld"中找T"hellr"这个子串的位置 实现的思路如下 第一轮&#xff1a;子串中的第一个字符和主串中的第一个字符进行比较 如果相等&#xff0c;继续比较主串和子串中的第二个字符如果不相等&#xff0c;进行…

解决vue3 + vite + ts 中require失效的问题(require is not defind)

require is not defind因为require是属于webpack的方法&#xff0c;vite中找不到这个方法肯定报错 解决办法 通过vite官网了解到新的引入方式&#xff0c;我使用了其中一种 imgList: [{name: "lj",src: new URL(../../assets/img/applyList.png, import.meta.url).…

大数据 DataX 数据同步数据分析入门

目录 一、DataX 概览 1.1 DataX 是什么 1.2 DataX 3.0 概览 设计理念 当前使用现状 二、DataX 详解 2.1 DataX 3.0 框架设计 2.2 DataX 3.0 插件体系 2.3 DataX 3.0 核心架构 2.3.1 核心模块介绍 2.3.2 DataX 调度流程 2.4 DataX 3.0 的六大核心优势 2.4.1 可靠的…

为Mkdocs添加在线聊天(Tidio为例)

以Tidio为例,Tidio免费版已经完全够用且无需梯子 访问Tidio官网 要在您的网站上使用 javascript 代码方法安装 Tidio&#xff0c;您需要创建一个 Tidio 帐户。要创建 Tidio 帐户&#xff0c;请访问我们的网站<www.tidio.com>&#xff0c;然后单击 “开始” 按钮创建新的…

代码随想录算法训练营第23期day24|回溯算法理论基础、77. 组合

目录 一、回溯算法基础 回溯法模板 二、&#xff08;leetcode 77&#xff09;组合 剪枝 一、回溯算法基础 1.回溯的本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出想要的答案&#xff08;为了提升效率&#xff0c;最多再加一个剪枝&#xff09; 2.回溯法解决的…

第五章 运输层 | 计算机网络(谢希仁 第八版)

文章目录 第五章 运输层5.1 运输层协议概述5.1.1 进程之间的通信5.1.2 运输层的两个主要协议5.1.3 运输层的端口 5.2 用户数据报协议UDP5.2.1 UDP概述5.2.2 UDP的首部格式 5.3 传输控制协议TCP概述5.3.1 TCP最主要的特点5.3.2 TCP的连接 5.4 可靠传输的工作原理5.4.1 停止等待协…

SpringMVC源码分析(三)HandlerExceptionResolver启动和异常处理源码分析

问题&#xff1a;异常处理器在SpringMVC中是如何进行初始化以及使用的&#xff1f; Spring MVC提供处理异常的方式主要分为两种&#xff1a; 1、实现HandlerExceptionResolver方式&#xff08;HandlerExceptionResolver是一个接口&#xff0c;在SpringMVC有一些默认的实现也可以…

(ubuntu) 安装JDK

文章目录 前言参看java版本的命令&#xff1a;安装jdk命令安装jps关闭防火墙&#xff1a;查看端口占用&#xff1a;&#xff08;坑&#xff09;ubuntu上Mysql默认标明 区分大小写 前言 提示&#xff1a;常以为人是一个容器&#xff0c;盛着快乐&#xff0c;盛着悲哀。但是人不…

JUC并发编程——线程池学习:基础概念及三大方法、七大参数、四大拒绝策略(基于狂神说的学习笔记)

线程池 池化技术的本质&#xff1a;事先准备好一些资源&#xff0c;线程复用&#xff0c;用完即还&#xff0c;方便管理 默认大小&#xff1a;2 最大并发数max 根据电脑去设置&#xff0c;CPU密集型&#xff0c;IO密集型 线程池的好处&#xff1a; 降低资源的消耗提高响应的…

【马蹄集】—— 概率论专题

概率论专题 目录 MT2226 抽奖概率MT2227 饿饿&#xff01;饭饭&#xff01;MT2228 甜甜花的研究MT2229 赌石MT2230 square MT2226 抽奖概率 难度&#xff1a;黄金    时间限制&#xff1a;1秒    占用内存&#xff1a;128M 题目描述 小码哥正在进行抽奖&#xff0c;箱子里有…

双目项目实战---测距(获取三维坐标和深度信息)

目录 1.简介 2.模块讲解 2.1 立体校正 2.1.1 校正目的 2.1.2 校正方法 2.2 立体匹配和视差计算 2.3 深度计算 3.完整代码 1.简介 双目视觉是一种通过两个摄像机&#xff08;或者两个镜头&#xff09;同时拍摄到同一个场景&#xff0c;再通过计算机算法来获取该场景深度…

C++ - 智能指针的定制删除器

前言 在上一篇C 文章当中&#xff0c;对 智能指针的使用&#xff0c;做了很详细的介绍&#xff0c;对 C11 和 C98 库当中实现的一些常用智能指针做了很详细的介绍&#xff0c;但是智能指针的使用还有一些拓展用法。上篇文章链接&#xff1a;C - 智能指针 - auto_ptr - unique_…

Stm32_标准库_16_串口蓝牙模块_手机与蓝牙模块通信_手机传入信息能对芯片时间日期进行更改

实现了手机发送信息给蓝牙模块&#xff0c;程序对数据进行分析拆解&#xff0c;并更新自身数据 main.c: #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "Serial.h" #include "Ti…

无人驾驶路径规划(一)全局路径规划 - RRT算法原理及实现

前言&#xff1a;由于后续可能要做一些无人驾驶相关的项目和实验&#xff0c;所以这段时间学习一些路径规划算法并自己编写了matlab程序进行仿真。开启这个系列是对自己学习内容的一个总结&#xff0c;也希望能够和优秀的前辈们多学习经验。 一、无人驾驶路径规划 众所周知&a…

Google Authenticator 和gitlab使用的方法配置Google AuthenticatorGoogle

Google Authenticator 和gitlab使用的方法 目录概述需求&#xff1a; 设计思路实现思路分析1.配置过程&#xff1a; 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a bette…

D201126 D201129 支持以太网高级物理层(APL)

D201126 D201129 支持以太网高级物理层(APL) 全球技术和软件领导者艾默生宣布了基于其无限自动化愿景&#xff0c;并作为其下一代以软件为中心的工业自动化架构的基础。新技术的发布将超越传统的控制系统&#xff0c;创建一个更先进的自动化平台&#xff0c;为人类和塑造世界…

【网络】网络层协议:IP(待更新)

文章目录 IP 协议1. 基本概念2. IP 报头解析 &#x1f53a;IP 的 网段划分&#xff1a; IP 协议 IP 不是面向字节流的&#xff0c;而是发送接收一个个的数据包 1. 基本概念 主机&#xff1a;配有 IP 地址的设备 路由器&#xff1a;配有单个或多个 IP 地址&#xff0c;且能进行…

【1314. 矩阵区域和】

目录 一、题目描述二、算法思想三、代码实现 一、题目描述 二、算法思想 三、代码实现 class Solution { public:vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {//先预处理数组int nmat.size();//行int mmat[0].size();…

flutter开发实战-下拉刷新与上拉加载更多实现

flutter开发实战-下拉刷新与上拉加载更多实现 在开发中经常遇到列表需要下拉刷新与上拉加载更多&#xff0c;这里使用EasyRefresh&#xff0c;版本是3.3.21 一、什么是EasyRefresh EasyRefresh可以在Flutter应用程序上轻松实现下拉刷新和上拉加载。它几乎支持所有Flutter Sc…