在小程序开发过程中,只要稍不注意代码细节,就会出现很多 warnings 警告,虽然在对小程序的运行并没有什么影响,但是作为一名严谨的程序猿,是不允许它们存在的。
下面我将从我的实际项目开发过程中碰到的warnings 问题进行分析处理。
Warning 1: Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors。
-
首先,看一下这个警告的内容:组件wxss中不允许使用某些选择器,包括标签名选择器、ID选择器和属性选择器。
-
上面这个问题的出现,主要是因为我们没有仔细阅读微信小程序的官方文档,请看 小程序·自定义组件和样式
-
解决方案:
- 上面文档中第一条就已经说明了,组件和引用组件的页面不能使用id选择器(
#a
)、属性选择器([a]
)和标签名选择器(button
),请改用class
选择器。 - 那么我们只需要将自定义组件内不符合规范要求的选择器改为
class
选择器即可。
- 上面文档中第一条就已经说明了,组件和引用组件的页面不能使用id选择器(
Warning 2: [/pageframe/pages/index/index] Do not set same key “[object Object]” in wx:key.
原代码:
<block wx:for="{{list}}" wx:key="*this">
- 原因:错误的把对象数据指定给了
wx:key
- 解决方案:
- 修改
wx:key
的值即可解决,代码如下:
- 修改
<block wx:for="{{list}}" wx:key="index">
Warning 3: Now you can provide attr wx:key
for a wx:for
to improve performance.
- 看了上面那个
wx:key
的警告问题,再来看一个这个警告。 - 可以看出,该警告只是一个关于性能优化方面的提示。是不会影响程序运行的。
- 解决方案:只需要在
wx:for
后面添加wx:key="index"
可消除警告。
<view wx:for="{{list}}" wx:key="index">{{item.text}}</view>
Warning 4: Setting data field “platform” to undefined is invalid.
- 问题:将数据字段“xxx”设置为未定义无效。
- 原因:查看该字段所在页面的位置,发现在进行
setData
时,没有取到值来进行更新,然后就会将undefined
给这个字段,此时默认字段就会变成undefined
,才会出现这个警告。 - 因为这个字段在页面中并没有用到,后面就废弃了,所以并没有报错,只是发起警告,如果使用该字段的话,就会报错。
- 没有取到值的原因有很多,我这个没有取到的原因是对应的变量找不到,因为我改过原来取变量的层级,所以才会导致找不到这条数据,所以大家写代码的时候一定要认真。
Warning 5: 工具未校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书。
-
出现这个警告的问题的原因是因为我们在开发过程中由于没有在后台配置合法域名,无法直接访问https接口,但是我们又需要其他接口数据的调试。所以我们会勾选 “详情” => “本地设置” => “不校验合法域名、web-view、TLS版本以及HTTPS证书”才能进行接口的访问,所以才会导致出现该警告。只要我们配置好相关的合法域名,将该选项勾选掉,就不会提示该警告了。
-
涉及到的相关内容可以看一下官网:小程序·网络这里讲解的很明白了。
以上几个 warnings 基本上就是我在项目完成时存在并且解决掉的,感觉这几个警告比较经典,就写下来跟大家分享一下,希望能够对大家有所帮助。欢迎各位点赞讨论。