做小程序的时候难免会遇到经常切换一个按钮或者某个组件的显示与隐藏,一般的写法是 绑定一个函数 去 this.setData({ show : true })
只要有需要切换显示与隐藏的都需要这样写一遍。很麻烦 so…

1 在utils 新建一个文件 pageDecorator.js

import { deepMerge } from './index'
function pageDecorator(params) {const originPage = PagePage = function (config) {config = deepMerge({ $setData, ...params }, config)return originPage(config)}
}
/*** @desc 修改页面data* @param {*} e */
function $setData(e) {const { key, value } = e.currentTarget.datasetthis.setData({ [key]: value })
}
export default pageDecorator

在app.js中全局引入

import pageDecorator from './utils/pageDecorator'onLaunch() {pageDecorator()}

这样就可以在任意页面上传递参数后设置一个值的 true 或者 false 了

<view bindtap="$setData" data-key="showMenu" data-value="{{!showMenu}}"><button>取反</button>
</view>
<view bindtap="$setData" data-key="showMenu" data-value="{{true}}"><button>setTrue</button>
</view>

deepMerge 代码

/*** 深度合并两个对象* @param obj1* @param obj2* @returns {*}*/
function deepMerge(obj1, obj2) {obj1 = deepClone(obj1)Object.keys(obj2).forEach(key => {obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" &&(obj2[key] && obj2[key].toString() === "[object Object]")? deepMerge(obj1[key], obj2[key]): (obj1[key] = obj2[key]);})return obj1;
}

简易的setData一个数据相关推荐

  1. 微信小程序多页面共用一个数据globalData,并及时同步更新各页面的数据的做法

    使用场景:比如有A.B.C 三个页面都有收货地址这么一个数据,这个收货地址的数据源是一样的,而这3个页面都可以独立修改收货地址.在其中一个页面修改收货地址后,另外两个页面的收货地址数据也要同步更新. ...

  2. python用for循环一直出现最后一个值_python中for循环的list最后一个数据总会覆盖前面的数据...

    问 题 1.如题,我真的是没办法了,用尽各种方法list的最后一个数据都会覆盖前面的数据. 2. class lotto_result_cl: def __init__(self, index, sp ...

  3. 探究!一个数据包在网络中的心路历程

    来自:小林coding 前言 想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题. 还别说,这真是挺常问的这题,前几天坐在我旁边的主管电话面试应聘者的时候,也问了这个 ...

  4. python中使用squarify包可视化treemap图:treemap将分层数据显示为一组嵌套矩形,每一组都用一个矩形表示,该矩形的面积与其值成正比、自定义设置每一个数据格的颜色

    python中使用squarify包可视化treemap图:treemap将分层数据显示为一组嵌套矩形,每一组都用一个矩形表示,该矩形的面积与其值成正比.自定义设置每一个数据格的颜色 目录

  5. pandas使用isna函数和any函数判断dataframe中的每一个数据列中是否包含缺失值

    pandas使用isna函数和any函数判断dataframe中的每一个数据列中是否包含缺失值(check if column contains any missing values in dataf ...

  6. pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行

    pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行.并设置keep参数保留重复行中的最后一个数据行 目录

  7. 如何创建一个数据科学项目?

    摘要: 在一个新的数据科学项目,你应该如何组织你的项目流程?数据和代码要放在那里?应该使用什么工具?在对数据处理之前,需要考虑哪些方面?读完本文,会让你拥有一个更加科学的工作流程. 假如你想要开始一个 ...

  8. html 表格点击修改全部替换成文本_excel表格计算一个数据在总值中的占比

    开局一张图剩下全靠查,今天又是瞎忙的一天,在我着急忙慌的跑去签字盖章的时候对象突然发来了一句灵魂拷问.她的问题瞬间就激发了我的被动技能.(皮一下就很开心) 其实,具体的问题是这样的,她问一个之前用ex ...

  9. Scott Mitchell 的ASP.NET 2.0数据教程之一: 创建一个数据访问层

    原文 | 下载本教程中的编码例子 | 下载本教程的英文PDF版 导言 作为web开发人员,我们的生活围绕着数据操作.我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据.本文是研 ...

最新文章

  1. 【Linux 经典面试题】
  2. Java获得泛型类中T的实例
  3. 【整理】SAP PM工厂维护模块初识
  4. 用开源的人工标注数据来增强RoFormer-Sim
  5. VC++ 轻松实现“闪屏” SplashWnd
  6. 数学--数论--HDU - 6322 打表找规律
  7. 数论分块练习([CF830 C]Bamboo Partition + [hdu 6395]Sequence )
  8. MySQL查询条件中的各种运算符/操作符说明
  9. gbk编码在线转换工具_TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具
  10. 汇编语言调用c语言ads,ADS1.2 在汇编代码中调用C函数
  11. 工业互联网巨头 GE Digital 修复SCADA 软件中的两个高危漏洞
  12. Dxg——Keil 单片机 开发笔记整理分类合集【所有的相关记录,都整理在此】
  13. 数据库性能优化面试题,全网最新
  14. 初识 Speex 语音压缩
  15. 怎样在vue中使用jquery
  16. 在移动硬盘中安装WIN10
  17. 矩阵正定 matlab,MatLab的:CHOL矩阵必须是正定
  18. POI对word文档中的指定内容添加批注
  19. android的IBINDER机制
  20. 微信小程序汽车租赁平台+后台管理系统

热门文章

  1. 计算机四级嵌入式原理
  2. 手机芯片研发有多难_制造手机《芯片》到底有多难
  3. 加载webview出现的问题(华为mate9)
  4. MFCC(Mel-Frequency Cepstral Coefficients)特征
  5. C++调用Python项目实战
  6. 使用ADB输入以及输入法切换
  7. c语言定义全局变量stm32,STM32 多文件全局变量简单定义方法
  8. 阿里巴巴中国站按图搜索1688商品(拍立淘) API 返回值说明
  9. mysql5.7 安装与自动备份数据库 和数据的恢复
  10. 雷蛇灵刃 16 游戏本 评测