logo科技微讯

小程序一些不太熟悉的知识点

作者:科技微讯
日期:2021-03-13
📝 笔记

一些不太清楚,不太熟悉的知识点。

原文

大多数 wx api 都支持返回 promise,但部分接口如 downloadFile, request, uploadFile, connectSocket, createCamera(小游戏)本身就有返回值, 它们的 promisify 需要开发者自行封装。

如果绑定的事件是个空字符串,则这个绑定会失效(可以利用这个特性来暂时禁用一些事件)<view bindtap="{{ handlerName }}"> Click here! </view>

大多数事件是冒泡事件,可以把 wxml 组件理解为有层次的区域,内部的组件位于更高的层次,点击屏幕会首先碰到这些组件,故而先触发这个组件的事件(如果这个组件绑定了事件的话)。可以用 catch 阻止冒泡。可以用 mut-bind 互斥事件。

capture-bind、capture-catch 用于监听事件的捕获阶段,后者将中断捕获阶段和取消冒泡阶段。捕获阶段位于冒泡阶段之前,且在捕获阶段中,事件到达节点的顺序与冒泡阶段恰好相反。

事件函数会被自动传入一个事件对象,这个对象包含 target、currentTarget、mark、detail 等属性,其中 target 是指触发事件的最前线的那个组件,currentTarget 是绑定了这个事件的组件,data- 这些数据位于 target 或 currentTarget 中,其他事件自带的数据通常位于 detail,例如 input 的 change 事件。

事件函数接收的事件对象有一个 mark 属性,mark 和 dataset 很相似,主要区别在于: mark 会包含从触发事件的节点到根节点上所有的 mark: 属性值;而 dataset 仅包含一个节点的 data- 属性值。如果存在同名的 mark ,父节点的 mark 会被子节点覆盖。

双向绑定,<input model:value="{{value}}" />,如果输入框的值被改变了, this.data.value 也会同时改变。同时, WXML 中所有绑定了 value 的位置也会被一同更新, 数据监听器 也会被正常触发。

原文

对于不同尺寸的显示区域,页面的布局会有所差异。此时可以使用 media query 来解决大多数问题。在 WXML 中,可以使用 match-media 组件来根据 media query 匹配状态展示、隐藏节点。此外,可以在页面或者自定义组件 JS 中使用 this.createMediaQueryObserver() 方法来创建一个 MediaQueryObserver 对象,用于监听指定的 media query 的匹配状态。

原文

初始渲染缓存,分为静态初始渲染缓存、动态初始渲染缓存。静态初始缓存很简单,只要在 json 文件中添加 "initialRenderingCache": "static"。动态则把 static 改为 dynamic,并且要在代码中用 this.setInitialRenderingCache(dynamicData) 设置动态的初始数据,这个 api 开销较大,要避免频繁调用。

原文

小程序重启机制,在应用或页面配置文件中添加 "restartStrategy": "homePage""restartStrategy": "homePageAndLatestPage"。如果是后者,可以用 onSaveExitState 保存一些数据,方便下次打开直接展示这些数据。

donation赞赏
thumbsup0
thumbsdown0
暂无评论