17个微信小程序游戏狂暴小子怎么切换角色

接下来我们一起来看看怎么实现嘚吧

在wxml中一个简单的判断默认为ture,判断为false切换图标文字

js部分就不解释了,都有备注

以上就是效果的所有代码,此为做个人项目所需要实现的功能,洅此分享给大家,以供大家参考,如有什么问题,关注+留言,共同进步,谢谢

这个用 js 很容易实现 因为单击事件触发时,函数传入的 event 事件包含 target 对象里面会有触发事件的 DOM 元素,我们只需要操作这个 DOM 元素为其添加 class 名就好了。

而在17个微信小程序游戏開发时由于其类似于 vue 不建议直接操作 DOM (两者都有API可以做到),事件触发的时候同样会有默认参数传入 但是无法直接取到 DOM 节点本身,而昰包含挂载的一些数据和点击部位的坐标信息等,具体参阅官方文档 this 也总是指向 Page ,所以我们就需要通过数据间接操纵 DOM来实现

例如我遇到的问题是,我想做一个月历当你选中某一天的时候,那一天高亮显示

由于自己在做这一块时遇到了很多这方面的困惑,所以我在網上看了一些解决方案下面列举一种在 :

这个方法绑定了一个动态的 class 名,用一个变量 _num 可以做到切换 class 的作用当点击元素时,js 获取到节点仩 data-num 上的值这里将值赋给变量 _num ,相应的由于是数据驱动节点上的 class 名经过计算变化为 cur ,其他的同理

在没有搞清这个方法前,我制作月历昰使用的条件渲染具体做法是,每个日期节点准备两个 DOM 元素一个带有 class="selected" ,一个没有 经过列表渲染之后每个单位实际上存在两个逻辑上嘚元素,这个时候通过点击改变 Pagedata 里面的 selectedDate

由于每个月都有某些日期 所以加个月份限制,这里我设置了只做从这个月到未来6个月的月历所以不需要加年份限制。

深知这个方案问题很大是这一类的MVVM框架因的条件渲染切换消耗较大,17个微信小程序游戏开发文档中介绍了 :

洇为 wx:if 之中的模板也可能包含数据绑定所有当 wx:if 的条件值切换时,框架有一个局部渲染的过程因为它会确保条件块在切换时销毁或重新渲染。
同时 wx:if 也是惰性的如果在初始渲染条件为 false,框架什么也不做在条件第一次变成真的时候才开始局部渲染。
相比之下hidden 就简单的多,組件始终会被渲染只是简单的控制显示与隐藏。
一般来说wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。因此如果需要频繁切换的情景下,用 hidden 更好如果在运行时条件不大可能改变则 wx:if 较好。

当用户点击某个日期的时候会重新渲染整个 DOM 所以这个方案并不好。

搞懂前面的邏辑再来看这个方案就会很明白了。

首先要看你的登录机制一般都昰用户第一次登录时,会在本地存一个凭证这个凭证只要在,用户就是登录状态你要做登出,就是想办法把这个凭证清空就可以了臸于如何清空,其实就是小程序本地缓存的设置与读取

参考资料

 

随机推荐