uni-app直接读取data里面的数据而不理会onLoad的Bug
uni-app直接读取data里面的数据而不理会onLoad的Bug
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | MD | HBuilderX |
示例代码:
//前页面
uni.navigateTo({
url: `/pages/userModule/dating/personalDetails?wu=${!wu}&id=${id}`,
})
//onLoad
this.is_wu = query.wu
//页面
<view v-if="is_wu" class="wrap">
<u-swiper :list="list" height="480" border-radius="0" mode="number" indicator-pos="bottomRight"></u-swiper>
</view>
<view v-if="!is_wu" class="wu">
<image src="/static/image/userModule/dating/wu.png" mode=""></image>
</view>
操作步骤:
见上
预期结果:
根据前一页面参数不同而显示不同
实际结果:
只认data
### bug描述:
通过数据控制两个组件只显示其中一个,通过前面页面传参的形式来控制。但只读取了data里面的数值,onLoad里接受参数后并没有生效
更多关于uni-app直接读取data里面的数据而不理会onLoad的Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
5 回复
打印下 query.wu 的值
更多关于uni-app直接读取data里面的数据而不理会onLoad的Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
值没问题,是数据类型变了,而v-if的自动类型转化无效
bug原因,经onLoad 后传递的值由布尔变成了字符串。需要重新转化为布尔类型
这不是 Bug,search 部分就是字符串啊,https://developer.mozilla.org/zh-CN/docs/Web/API/URL/search
这是一个典型的uni-app页面生命周期和数据响应问题。问题出在页面初始渲染时data中的默认值优先于onLoad中设置的值。
解决方案:
- 在data中初始化is_wu为null或undefined,而不是true/false:
data() {
return {
is_wu: null
}
}
- 确保onLoad中正确接收参数:
onLoad(query) {
this.is_wu = query.wu === 'true' // 注意参数是字符串
}
- 在模板中添加null判断:
<view v-if="is_wu !== null">
<view v-if="is_wu" class="wrap">...</view>
<view v-else class="wu">...</view>
</view>