个人案例
- 自定义组件没有被销毁,导致存在内存泄露的情况?
Demo 地址 问题描述 自定义组件实例没有被销毁,如果给组件的 properties 传递了大量数据(Demo 中是 500k),将快速占用内存。 复现步骤 1.打开 Demo,然后打开开发者工具的 Memory 面板,录取内存快照,关注构造函数:l。 [图片] 2.点击 Click 按钮 10 次(相当于渲染、隐藏自定义组件 foo 5 次),然后点击强制垃圾回收按钮,接着再次录取内存快照。 3.选中快照 Snapshot2,filter 设置为:Objects allocated between Snapshot1 and Snapshot2,并筛选构造函数:l。这时可以观察到内存占用大幅上升,其中新增的 5 个对象 l 引用了 32% 的内存。 [图片] 4.展开其中一个 l 对象,可以观察到其 __methodCaller 属性引用的是一个自定义组件实例,从而判断 l 对象跟自定义组件有关。再观察 l 对象中内存占比较大的字段分别是 __vtObj 与 __innerData,它们都分别引用着父组件传入的 json 属性(500k 大数据)。( l 对象的 Retainers 是一些循环引用或内部代码,很难再往下追查) [图片] 5.右键点击 l 对象,选择 Store as a global variable,把 l 对象放到控制台进行观察,发现 __vtObj 与 __innerData 属性引用的是独立的 json 对象。 [图片] 6.综上,推测自定义组件实例没有被销毁,如果给自定义组件的 properties 传递了大型数据,会导致内存泄露问题更明显。 环境信息 基础库:2.32.2复现环境:微信开发者工具(真机调试不支持堆栈 snapshot)
2023-06-26 - 营销活动有烦恼? 微信网关低至1折,为你的业务保驾护航!
[图片] 活动火爆服务崩溃?羊毛党薅走福利? 业务数据被爬?无法科学复盘活动? 微信网关限时优惠,为你的业务保驾护航! 微信网关是什么? 微信网关是微信团队推出的面向小程序、公众号、APP、网页端的安全服务,提供自研链路、弱网加速、流量治理、安全防护等能力,全方位保障业务高安全、高效率、高可用运行。点击可了解更多 微信网关产品能力 今年的11月11日,为了感谢各位开发者对微信网关的支持,微信团队推出微信网关年度特惠活动,助力企业/个人开发者的业务高效安全运行、营销活动重保!话不多说,快来看看都有什么优惠活动? 限时优惠活动详情: 100QPS 版本套餐原价999元,现价99.9 元! 其他版本套餐买二送一,多买多送!! 每买1个月套餐,送2个资源包(可用于压测/活动重保)。 限时活动规则: 11月11日至12月12日,新老用户均可参加。 个人和企业用户均享优惠,资源有限抢完即止~ 还等什么?上链接!! 其实,除了微信网关,我们也推出了其他产品的优惠活动,建议大家也不要错过哦~ 产品体验分析,助力小程序智能经营分析。 购买大版本网关套餐或资源包,赠送产品体验分析存储资源。前往 We分析,深入数据洞察,助力业务增长。 折扣低至65折起!前往 更多微信网关接入知识可参考: 微信网关官网 微信网关官方文档 微信网关系列课程 这份业务安全入门攻略请收好! 微信网关相关场景解析: 加上这一“关”,活动重保轻松过关 你的业务还在被“薅羊毛”吗? 压测工具,千万级流量扛得住! 黑灰产的4000万次攻击,我们和茶百道防住了! 对于微信网关 ,你有什么更期待的能力么?或有什么优化建议?或在接入过程中遇到了什么困难?欢迎留言告诉我们呀~ 即日起至 2024 年 12 月 7 日,欢迎各位开发者在下方评论区进行留言,精选评论的用户将获得官方精美礼品一份。[图片]
11-11 - 微信支付报错:201商户订单号重复
发起微信支付但未支付,调用关闭订单接口后,查询订单也是关闭状态, [图片] 再次使用之前的商户订单号发起支付报错:201 商户订单号重复[图片]
04-22 - “商户订单号重复”这个问题该怎么解决呢?
近期在开发微信支付中碰到一个问题:下单后发起支付统一下单,然后取消支付,后台修改了支付价格,再发起支付就会出现“201 商户订单号重复”;通过关闭订单再发起支付也不行,请教一下遇到需要修改价格的情况下怎么发起支付呢?
2020-11-09 - 微信云开发支付签名错误,请情况?
说一下没有子商户,只有商户号,就是用的以前的支付接口,这是云开发没有后端代码那个notify_url不写还不行, 不知道哪里有问题, 签名在微信工具里验证通过,调用下单接口就报签名错误,希望会的人答疑解惑一下,谢谢啦 //2 openid 就是支付用户的识别号 const mch_id = 'xxx '; // 商户号 const key = 'xxxxx'; // 商户密钥 const cloud = require('wx-server-sdk') const rp = require('request-promise') const crypto = require('crypto') cloud.init() function getSign(args) { let sa = [] for (let k in args) sa.push(k + '=' + args[k]) sa.push('key=' + key) console.log(sa.join('&')) return crypto.createHash('md5').update(sa.join('&'), 'utf8').digest('hex').toUpperCase() } function getXml(args) { let sa = [] for (let k in args) sa.push('<' + k + '>' + args[k] + '</' + k + '>') sa.push('<sign>' + getSign(args) + '</sign>') let axml = '<xml>' + sa.join('') + '</xml>' console.log("最后签名:",axml) return axml } function getNonceStr(){ var chars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; var nums=""; for(var i=0;i<32;i++){ var id = parseInt(Math.random()*61); nums+=chars[id]; } nums= nums.toLowerCase() return nums ; } exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const appId = appid = wxContext.APPID console.log("appid是:", appid, appId) console.log("key是:", key) const openid = wxContext.OPENID // const attach = 'attach' const body = event.msg; const total_fee = event.totalFee; const notify_url = "http://127.0.0.1" const spbill_create_ip = "127.0.0.1" const fee_type = "CNY" // const nonceStr = nonce_str = Math.random().toString(36).substr(2, 15) const nonceStr = nonce_str = getNonceStr() const timeStamp = parseInt(Date.now() / 1000) + '' const out_trade_no = event.outTradeNo; const trade_type = "JSAPI" const sign_type = "MD5" const xmlArgs = { appid, // attach, body, fee_type, mch_id, nonce_str, notify_url, openid, out_trade_no, sign_type, spbill_create_ip, total_fee, trade_type, } let xml = (await rp({ url: "https://api.mch.weixin.qq.com/pay/unifiedorder", method: 'POST', body: getXml(xmlArgs) })).toString("utf-8") console.log("签名是:",xml) if (xml.indexOf('prepay_id') < 0) return xml let prepay_id = xml.split("<prepay_id><![CDATA[")[1].split("]]></prepay_id>")[0] let payArgs = { appId, nonceStr, package: ('prepay_id=' + prepay_id), signType: 'MD5', timeStamp } return { ...payArgs, paySign: getSign(payArgs) } }
10-23 - 微信小程序的Text组件,设置user-select之后,怎么样才能当一行放不下的时候不整体换行?
微信小程序的Text组件,设置user-select之后,当一行放不下这个text文本的时候,会整体换行。有没有什么办法让这是user-select的text组件按照原来的样式正常换行(填充完当前行之后剩下部分的再换行展示) <scroll-view class="scroll-area" type="list" scroll-y style="padding: 0px 20px; box-sizing: border-box;"> <view style="display: inline;"> <text >欢迎使用代码片段,</text> <text >:可在控制台查看代码片段的说明和文档</text> </view> <view style="margin-top: 50px;"> <text user-select>欢迎使用代码片段,</text> <text user-select>:可在控制台查看代码片段的说明和文档</text> </view> </scroll-view> [图片]
10-21 - 强烈投诉,小程序服务类目被打回10次,一直被要求补充的资料卫健委说从不提供这种内容,为什么还不通过?
审核类型:服务类目审核“医疗服务>互联网医院” 提审时间:自9月20号上传第一版,到10月14号,过程中上传不少于10次,快要一个月过去了,依然没有审核通过。 面临问题: 申请服务类目为“医疗服务>互联网医院”,我们按照要求上传了相关资质。我们小程序主题是A,互联网医院牌照的主体是B。针对合作医院B的《医疗执业机构许可证》和A与B《合作协议》均没有什么异议。 但是,微信审核时,要求“《医疗主管部门许可文件》(含“互联网诊疗“相关内容)”和“《省级互联网医疗服务监管平台对接情况证明》”这两项资料, 需要上传任何一项资料。 在跟浙江省卫健委的领导沟通后,对方回复“我们已经发给你们了《医疗执业机构许可证》,还需要什么《医疗主管部门许可文件》,我们没有这样的内容可以提供。” 所以我们选择,上传省监管平台下载的《省级互联网医疗服务监管平台对接情况证明》,同时附了省监管平台及浙里办等官方平台查到的B互联网医院,以及公开可核实的官网链接,并加盖了我司公章。但是微信平台要求加盖政府相关部门单位的公章,可是浙江省卫健委的领导回复“我们没有这样的盖章流程,盖不了。” 想要问问小程序服务类目的审核人员: 1、你们要的《医疗主管部门许可文件》或者《省级互联网医疗服务监管平台对接情况证明》,具体是个什么样子,能否给个示例,我们也好发给浙江省卫健委的领导参考? 2、我们已经证明了B有有效期内的《医疗执业机构许可证》和A与B有有效期内的《合作协议》,上传另外两项资料的合理性是什么? 我们上传的资料你们真的看了么?你们的一次审核,关系到我们挣个团队一个季度的努力,但是你们并不会管我们死活。再审核不通过,我们整个产品部都要被开了。。。。客服联系不到,审核又不合理,真的。。。。
10-14 - 就医服务类目卫健委批文究竟是什么?
小程序就医服务类目需要的卫健委批发就是医疗机构执业许可证吗?
2022-04-05 - 微信小程序 Editor组件在无内容的情况下,长按无法粘贴,会自动收起键盘,但没有失焦
微信小程序 Editor组件在无内容的情况下,长按无法粘贴,会自动收起键盘,但没有失焦
2023-07-11 - 小程序插件开发,useCompilerPlugins配置了sass就会报错?
主要问题如题,设置为false就不会报错 开发者工具报错,真机又不会报错,但是很影响调试。。 [图片]
2023-09-11