微信小程序中的 this.setData()

微信小程序中的 this.setData(),第1张

在小程序中使用thissetData()方法是非常常见的,通过这个方法,可以将data中的变量进行赋值那么如果遇到下面这种情况:

如果此时我想修改 belineData 对象下的 name 的值,我们可以这样 *** 作

这样就可以把字符串赋值给对象下的 name 属性

这个时候,我们需要给 belineData 数组下的第一个对象赋值的话大概脑子里想的应该是:

然后,我们会发现,这样写并不行而要通过ES6的标识符来实现

使用变量的部分要 ${} 套用起来就可以了

wxml内容:

<view bindtap="a" data-f="{{flag}}">123</view>

<!-- wx:for="{{数组}}" 循环需要绑定key wx:key="index"-->

<!-- 自带定义 item 表示数组的每一项 index 表示数组的索引 -->

<!-- 使用wx:for-item修改每一项值的key -->

<!-- 使用wx:for-index修改每一项值的index -->

<view wx:for="{{list}}" class="t" wx:key="i" 

    wx:for-item="r" wx:for-index="i"

    style="color:{{rstyFlag'red':''}};"

    data-i="{{i}}"

    bindtap="choose"

>

    {{rname}}--{{i}}

</view>

js内容:

data: {

        flag:1,

        list:['冰墩墩','雪融融','小泡菜'],

        list:[{

            name:'冰墩墩',

            styFlag:true

        },{

            name:'雪融融',

            styFlag:false

        },{

            name:'小泡菜',

            styFlag:false

        }]

    },

    choose:function(e){

        let { currentTarget:{ dataset:{i} } } = e;

        / 第一步获取点击的当前的内容的索引 /

        consolelog(i)

        / 排他 把所有的先置空 /

        thisdatalistforEach(r=>{

            rstyFlag = false

        })

        thisdatalist[i]styFlag = true;

        / 数据变了 视图没变 必须要使用setData实现数据和视图的双向数据绑定 /

        thissetData({

            list:thisdatalist

        })

    },

    a:function(e){

        consolelog(e)

    },

效果:

wxml内容:

<button bindtap="go1" style="margin: 3px;">张三</button>

<button bindtap="go2" style="margin: 3px;">李四</button>

<button bindtap="go3" style="margin: 3px;">24号</button>

<button bindtap="go4" style="margin: 3px;">不带参数</button>

<button bindtap="goBack">返回上一级</button>

<!-- wx:if 和 wx:elif 以及wx:else之间不可以被其他的标签打断 -->

<block>

    <view wx:if="{{msg=='zhangsan'}}" class="t">欢迎回来主人</view>

    <view wx:elif="{{msg=='lisi'}}" class="t">家里水龙头没有坏不要过来</view>

    <view wx:elif="{{msg=='24'}}" class="t">您好欢迎为您服务</view>

    <view wx:else class="t">显示家里没人</view>

</block>

js内容:

Page({

    /

      页面的初始数据

     /

    data: {

        msg:""

    },

    goBack:function(){

        wxnavigateBack()

    },

    /

      生命周期函数--监听页面加载

     /

    onLoad: function (options) {

        consolelog(optionsname)

        / 多次使用setData会影响性能 尽量把多次setData 使用一次setData来实现

        尽量少的使用setData来提高小程序的性能 /

        thissetData({

            msg:optionsname

        })

        / 如果名字叫张三 页面显示欢迎回来主人 /

        / 如果名字叫李四 页面显示家里水龙头没有坏不要过来 /

        / 如果名字叫24号 页面显示您好欢迎为您服务 /

        / 都不是 显示家里没人 /

    },

    /

      生命周期函数--监听页面初次渲染完成

     /

    onReady: function () {

    },

    /

      生命周期函数--监听页面显示

     /

    onShow: function () {

    },

    /

      生命周期函数--监听页面隐藏

     /

    onHide: function () {

    },

    /

      生命周期函数--监听页面卸载

     /

    onUnload: function () {

    },

    /

      页面相关事件处理函数--监听用户下拉动作

     /

    onPullDownRefresh: function () {

    },

    /

      页面上拉触底事件的处理函数

     /

    onReachBottom: function () {

    },

    /

      用户点击右上角分享

     /

    onShareAppMessage: function () {

    }

})

{

  "pages": [

    "pages/index/index",

    "pages/forpage/forpage",

    "pages/mypage/mypage",

    "pages/logs/logs",

    "pages/fenglei/fenglei"

  ],

  "window": {

    "backgroundTextStyle": "dark",

    "navigationBarBackgroundColor": "#FF0000",

    "navigationBarTitleText": "kw47page",

    "navigationBarTextStyle": "white"

  },

  "tabBar": {

    "color": "#fff",

    "selectedColor": "#FFCA28",

    "backgroundColor": "#000",

    "list": [{

      "pagePath": "pages/index/index",

      "text": "首页",

      "iconPath": "",

      "selectedIconPath": ""

    }, {

      "pagePath": "pages/logs/logs",

      "text": "日志",

      "iconPath": "",

      "selectedIconPath": ""

    }]

  },

  "style": "v2",

  "sitemapLocation": "sitemapjson"

}

效果图:

Page({

data:{

phone:110,

obj:{a:456},

arr:[{b:789}]

},

fun:function(){

thissetData({

phone:120, //修改字符串

'obja':444, //修改对象

'arr[0]b':777 //修改数组

});

}

});

您好,

微信小程开发之前必须要完成和注册认证。如果是个人或者小公司想开发微信小程序,也可以找微信认证第三方开发商,比如赢在移动、正品科技等。

1、微信小程序注册

在微信公众平台官网首页,按照提示点击右上角的“立即注册”按钮,里面总过有12步,按照要求提交就可以了。

2、小程序申请微信认证

政府、媒体、其他组织类型帐号,必须通过微信认证验证主体身份。企业类型帐号,可以根据需要确定是否申请微信认证。已认证帐号可使用微信支付、微信卡券等高级权限。

认证入口:登录小程序—设置—基本设置—微信认证—详情

3、小程序申请微信支付

已认证的小程序可申请微信支付。

4、小程序绑定微信开放平台帐号

小程序绑定微信开放平台帐号后,可与帐号下的其他移动应用、网站应用及公众号打通,通过UnionID机制满足在多个应用和公众号之间统一用户帐号的需求。

UnionID机制说明:如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。用户的UnionID可通过调用“获取用户信息”接口获取。

5、了解“获取用户信息”接口请查看开发文档—API—开放接口—用户信息。

绑定小程序流程说明:登录微信开放平台、—管理中心—公众帐号—绑定公众帐号

注意:微信开放平台帐号必须完成开发者资质认证才可以绑定小程序。

是通过setData实现的。根据微信小程序简介可知,小程序的软件众多,页面更新数据是通过setData实现的。setData是小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。setData函数用于将数据从逻辑层渲染到视图层(异步),同时改变对应的thisdata的值(同步)。

官方

先看一下官方对于 thisdata 和 thissetData({}) 的定义与用法

知识点

thisdata 是用来获取页面data对象,仅会改变数据,无法改变页面的状态,可能会造成数据不一致;

thissetData({}) 是用来修改数据,不仅会改变数据,而且还会改变视图;

问题

实际自己在学习过程中,遇到一个问题,下拉刷新的方法当中,用 thisdata thissetData({}) ,在数据显示上并没有什么不同,学习的视频中,授课老师用的是thisdata,这个地方我自己也没有搞清楚是为什么

*** 作效果:

thisdata

thissetData({})

可以看出来,两者使用并没有什么明显的区别。

总结

实际使用当中按照上面 知识点 部分加粗部分去执行,肯定是没有错的,涉及到页面数据更新的,使用thissetData({}) ,在js中使用data数据时使用thisdata属性 。

以上就是关于微信小程序中的 this.setData()全部的内容,包括:微信小程序中的 this.setData()、微信小程序for循环以及页面跳转、微信小程序如何用setData修改data中的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10166116.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存