常见踩坑点

初级

  • 如果在zion网页操作时遇到“创建变更失败”的提示,可尝试强制刷新网页(ctrl + shift + R / command + shift + R)解决。如果强制刷新无果,可以先保存项目再强制刷新。
  • 如果手机扫码进入小程序后立即出现报错,可能是由于缓存问题,可尝试删除小程序,然后重新扫码进入。如果依然报错,说明首页配置有问题。
  • account表权限:account表的权限设置目前比较奇怪,如果要在account表中储存额外的信息,请记住在小程序前台,用户只能修改自己的那一条数据,而且只限于id、username2个字段。这个限制暂时只能通过改json源文件实现。
  • 控制台中删除数据后,需要点击页面任意空白位置以确认操作,否则可能出现删除被自动撤销的情况。
  • 输入框多行+适应内容由于微信的bug,会出问题。一般会用拉大输入框,多行+固定高度勉强替代。
  • 输入框的值并不会随着绑定的数据(比如远程数据、页面数据)更改而更改,需要使用设置输入框值行为对其进行重设。
  • 数据验证暂时只能在修改行为上添加,其他诸如在输入框上直接配置的做法都会报错。
  • 不要直接给选择视图的选中视图/正常视图的容器添加行为,会将“选中/取消选中”这个默认行为吞掉。

中级

  • 使用微信开发者工具的前提:
  1. 小程序填写了基本信息(没有填写,则只能在手机端用体验版,也不能上线)否则会报错信息:invalid code
  2. 小程序添加了你为开发者
  • 数组数据的聚合目前只支持远程数据,多选选择器数据无法进行任何聚合,数组页面数据仅支持count聚合。
  • 大型项目经常会遇到包大小上限,主包/分包需要小于2mb,总大小需要小于20mb。其中主包的定义是首页+所有底部导航栏页面。

几个遭遇包上限时的做法
相关阅读链接:小程序主包过大问题

  1. 在发布设置处将主包和分包大小设置最小:分包设为1,主包设为首页+底部导航栏的数量,如果首页在底部导航栏上,则设为底部导航栏的数量。
  1. 直接使用非原生的底部栏,也就是用条件式容器代替底部导航栏,然后将主包数量改为1。
  • 养成良好习惯,在添加一条数据时,如果里面有未赋值的数值变量,将其赋值为0。这不仅是出于ui上的考虑,还会影响未来update行为时对这个变量的increment和decrement。(null的数值变量执行increment或decrement后会被吞掉)。
  • 列表容器中,不能使用过滤条件带项数据的聚合数据,无论是条件式容器的条件还是单纯的数据绑定。
  • 列表容器中设置显示自定义对话框行为,对话框不可直接用项数据,需要页面数据过渡。
  • 查询远程数据/列表、修改行为,建议设置「成功时行为」,从而判断是否成功,是否网络问题,是否返回了微信。
  • 分享行为会把其他一起执行的行为吞掉。解决方法是在成功时再执行分享行为。
  • 标签栏自定义模式时开适应内容,否则会报错。如果需要用到自定义样式,可以用选择视图+条件式容器/列表组合代替。
  • 获取用户手机号行为,只能通过按钮点击事件触发,不能放在成功时下执行,同时主体必须是企业小程序。
  • 日期选择器必须选择一个默认值,否则会返回invalid date。如果用某个日期类型的数据源作过滤条件,但没有选择具体的日期,也会返回报错。
  • 养成良好习惯,多按command/ctrl+s,进行保存。
  1. zion在理论上会自动保存的用户的操作,但是这种保存并不是直接保存为一个新版本,而是以diff形式保存,可以理解为它保存了用户了每一步操作(为了可以实现撤回/回退等操作)。所以如果一直没有按command+s保存新版本,那么下次进入项目时,服务器将会请求并复现从上一次保存的版本开始,用户执行的所有操作。
  2. 进阶:打开F12会发现,其实每一步操作都会执行一次mutation CreateSchemaDiff,而每一次保存都会执行一次mutation UploadSchema(上传新版本),而每次重新进入小程序,都会执行query SchemaDiffs,亦即请求并加载从上一个版本开始的所有操作。
  • 请确保列表类组件设置的分页数量大于页面上组件直观展示出来的cell数量,比如下图设置分页数量为2,但组件直观展示的cell数量为3,就会导致“加载更多”失效:

正确的做法是将分页数量改为4或以上,或者将该组件的height进一步缩小至只展示出一个cell:

  • 列表的滚动穿透
    当页面中最下方的非悬浮组件为列表,且该列表 y值+(最小)高度 > 手机屏幕页面高度时,会导致滚动穿透,因为系统没有分辨清楚你是在滚动列表还是在滚动整个页面。这个现象在小屏手机上更容易发生。
    通常的解决方法为将列表改为充满父组件,并减少最小高度,确保y值+最小高度不高于568 (iphone 5 的屏幕高度)。

高级

  • 为当前日期时间设置偏移量时,不能使用页面数据、远程数据,只能写死、或者用全局数据。
  • 分包数量修改后,所有用到过页面路径的场景,都需要再次修改下页面路径,包括但不限于:跳具体页面的二维码,使用到页面路径参量的api等
  • 不限额远程数据正常请求时,payload是不带aggregate关键词的,如果页面中使用了聚合方法,payload会带上aggregate关键词。在这种情况下再设置该远程数据为多选-选择视图的默认值,就无法返回期待的结果。
    解决方法:用集合为空等判断条件替代聚合方法的判断,或者写2条一样的不限额远程数据,一条用来做选择视图的默认值,一条用计算聚合数据。
  • 滚动至scroll行为暂时不支持操控选择视图(可选,但是选了也无用)
  • 如果有多条结果数据,目前默认只会取第一条。如果需要对多条数据进行,通过列表事件或actionflow来实现需求
  • update不允许任何字段值都为空的情况出现,否则会返回server internal error。必要时可以给无关紧要的字段赋个值避开这个限制
  • 图片选择器的默认值只是一层皮,实际上是空的。但由于update对空值的无视,实际操作时很少受影响。但结合update不允许任何字段值都为空这个限制条件时,可能会出问题,处理办法也是随便搞个无关紧要的字段赋个值
  • 添加完约束后生成失败,通常是因为在添加之前数据库就有不满足约束的重复数据

需要更多帮助

未能解决您的问题?跳转社区进行话题讨论

2022-07-04
0 0