小程序中遇到的各种重难点(md5加密解密)

提示:持续更新一些在小程序中遇到重难点,文章内容很多其他博主也写了,建议点击链接观看原文。

文章目录

  • 前言
    • this.data和this.setData区别和使用(重点)
    • this的指向问题(重点)
    • page与page({})外部声明定义的参数方法
    • bindtap与catchtap的区别(重点)
    • 小程序执行顺序
    • e.currentTarget.dataset和e.target.dataset区别和使用(重点)
    • data-key
    • 小程序页面间如何进行传递数据(重点)
    • 小程序接收与传递给服务器的数据格式
    • this.setData如何修改对象、数组中的值
    • git版本回退最佳方式
    • git主支合并分支,分支合并主支
    • md5加密解密最新使用


前言

工作接触小程序了,主要会记录小程序的一些内容


this.data和this.setData区别和使用(重点)

data 是页面第一次渲染使用的初始数,页面加载时,data 将会以JSON字符串的形式由逻辑层传至渲染层,因此data中的数据必须是可以转成JSON的类型:字符串,数字,布尔值,对象,数组

this.setData({})用于将数据从逻辑层发送到到视图层(异步),同时也会改变this.data的值(同步)

用this.data而不用this.setData({})会造成页面内容不更新的问题。this.data数据变了,但是视图不会变。

this.data与this.setData的关系就是this.setData里面存储的是this.data的副本,而界面是从this.setData里面托管的this.data的副本取数据的。所以我们更改this.data并不会直接更新界面,因为这个时候的this.setData里面的副本还是没有更新前的

js页面中如何使用data里面的数据? 答:必须通过this.data.属性获取

如何修改data里面的数据? 答:this.setData({属性:值});直接使用data里面的属性

this的指向问题(重点)

用于js存在作用域和闭包问题,this往往指向当前对象,所以就容易产生问题。目前想到两种方式

第一种:一开始赋值给一个参数 即 var that = this
第二种:直接使用箭头函数。

当我们使用箭头函数时,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。

page与page({})外部声明定义的参数方法

Page(Object object)
注册小程序中的一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等

在Page({})外面声明的变量,
进入这个页面后,你又退出了,虽然页面没有在页面堆栈中了,但是页面其实还在内存中(小程序为了加载速度),你下次进入页面,test的值依然还保留着,每次都+1。

var test = 0;//外部声明的变量
Page({
  onLoad(){
    test+=1;
    console.log(test);
  }
})

想要每次都清空,只能在onLoad或者onUnload里面重置一下。

bindtap与catchtap的区别(重点)

事件详解

https://www.cnblogs.com/eline2018/p/10394974.html

小程序执行顺序

app.js是小程序逻辑 ,app.json是小程序公共设置,app.wxss是小程序公共样式。在app.js文件中 , 定义了一些生命周期方法 , onLaunch,onShow,onHide,onError,以及任意开发者添加的函数或者数据(通过this可以访问)

打开程序依次执行了app.js下面onLaunch和onShow方法,以及page页面中的onLoad,onShow和onReady方法。其中 , onLaunch, onShow 方法会返回一个参数对象, 里面包含了三个参数 , path,query和scene ,path是打开小程序的路径。

注意:
(1)App() 必须在 app.js 中注册,且不能注册多个。
不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例。
(2)不要在 onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。
(3)通过 getApp() 获取实例之后,不要私自调用生命周期函数。

## 小程序中的脚本执行顺序
小程序的执行的入口文件是 app.js 。并且会根据其中 require 的模块顺序决定文件的运行顺序,当 app.js 执行结束后,小程序会按照开发者在 app.json 中定义的 pages 的顺序,逐一执行

e.currentTarget.dataset和e.target.dataset区别和使用(重点)

e.target与e.currentTarget区别详解
e.currentTarget.dataset和e.target.dataset都可以获取数据效果一样,除非遇到了事件冒泡

target:触发事件的源组件(事件注册/绑定所在组件
currentTarget:事件触发的当前事件(当前事件,可能是触发事件的源组件,可能是触发的事件组件(即触发事件源组件的子元素),此时点击子元还是父元素,都是当前事件,应用e.currentTarget)。

data-key

其他文章解释
data-xx 的作用是在事件中可以获取这些自定义的节点数据,用于事件的逻辑处理

比如 写一个list列表 想知道点击的list列表的那一个item ,比如获取点击的图片,等等

使用data-xx 需要注意的 xx 是自己取的名字, 后面跟着的渲染一定要是使用的值,否则无效

比如点击的是list 后面跟的是list的值,如果是图片后面就要是图片url的地址,
**

小程序页面间如何进行传递数据(重点)

**
详解 | 小程序页面间如何进行传递数据(好文推荐)

小程序接收与传递给服务器的数据格式

数据格式转换

this.setData如何修改对象、数组中的值

this.SetData中对象、数组值得修改
动态修改数组的值

var param = {};
var string = "array["+index+"].text;
param[string] = 'changed data';
that.setData(param);

下面内容原文链接 https://blog.csdn.net/a458383896/article/details/89787442
传递数组:
其他数据格式暂时不知道,我的数据主要是对象数组格式,传递的时候总是获取不到数据。所以网上找了好多没有具体方案。自己写了一下。仅供参考!

arraylist2 是一个数组,数据格式是[{“id”,1},{“content”,“我的”}]

格式差不多就是这样 然后将它JSON.stringify()传递一下

wx.navigateTo({
      url:'../textcontent/textcontent?arraylist2=' + JSON.stringify(that.data.arraylist2), 
           success:function(res) {
             console.log("成功回调",res);
 
            },      
            fail : function(res){
              console.log("失败回调",res);
            }
    
  })

在下一个页面 获取值然后JSON.aprse()转换成json对象

data: {
    arraylist:""
  },
 
  onLoad: function (options) {
    console.log("options", options.arraylist2.title);
    //var array = options.arraylist2.split(",");
    var array = JSON.parse(options.arraylist2);
    this.setData({ 
      arraylist: array
    }) 
    console.log("arraylist", this.data.arraylist);
 
  },

在需要数据的页面就可以获取{undefined{arraylist.title}}

<view class="t-bg tx-l uinn" style='text-indent:40rpx;'>{{arraylist.title}}</view>
<view class="t-gra tx-l uinn  ulh-a" style='text-indent:40rpx;'>{{arraylist.content}}</view>
 

微信小程序 跳转传参数 传对象
微信小程序跳转传参

一般都是传字符串到下一页,如果要想传对象怎么办呢?

我的解决办法是先将对象转换为json字符串然后到下个页面将json字符串,再转化为对象。如下:

let str=JSON.stringify(e.currentTarget.dataset.item);
wx.navigateTo({
url: '../toMybaby/babyDetail/babyDetail?jsonStr='+str,
success: function (res) {
// success
},
fail: function () {
// fail
},
complete: function () {
// complete
}
})
 

onLoad:function(options){
    // 生命周期函数--监听页面加载
    let item=JSON.parse(options.jsonStr);
    this.setData({ward:item});
  },

git版本回退最佳方式

git 回退清楚描述
git回退简易讲解

操作步骤如下:

1、找到你误提交之前的版本号

2、git revert -n 版本号

3、git commit -m xxxx 提交

4、git push 推送到远程

git主支合并分支,分支合并主支

git merge命令只能合并本地分支,无法直接合并远程分支,因此在合并之前需在分支上使用git pull命令获取最新代码。
1、主干合并分支
进入分支,更新分支代码
(branch)git pull;
切换主干
(branch)git checkout master;
在主干上合并分支branch
(master)git merge branch --squash
提交合并后的代码
(master)git commit -m ‘合并备注’
将代码推送到远程仓库
(master)git push

2、分支合并主干
进入主干,更新主干代码
(master)git pull;
切换分支
(master)git checkout branch;
在分支上合并主干
(branch)git merge master --squash
提交合并后的代码
(branch)git commit -m ‘合并备注’
将代码推送到远程仓库
(branch)git push

md5加密解密最新使用

注意区分老方法和最新方法的引入
详细文章讲解

你可能感兴趣的:(小程序,小程序)