采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
瀑布流组件里面:
F12切换时,views/main/components/list/index.vue没有重新加载,也就没有重新执行isMobileTerminal,导致column没有监听到。
原因,在切换f12时 props.column 没有监听到变化,老师,这是为啥?
// 触发计算
watch(
() => props.data,
(newVal) => {
// 重置数据源
const resetColumnHeight = newVal.every((item) => !item._style)
if (resetColumnHeight) {
// 构建高度记录容器
useColumnHeightObj()
}
nextTick(() => {
if (props.picturePreReading) {
waitImgComplate()
} else {
useItemHeight()
})
},
{
immediate: true,
deep: true
)
/**
* 监听列数变化,重新构建瀑布流
*/
const reset = () => {
setTimeout(() => {
// 重新计算列宽
useColumnWidth()
// 重置所有的定位数据,因为 data 中进行了深度监听,所以该操作会触发 data 的 watch
props.data.forEach((item) => {
item._style = null
}, 100)
() => props.column,
() => {
// 在 picturePreReading 为 true 的前提下,需要首先为列宽滞空,列宽滞空之后,会取消瀑布流渲染
columnWidth.value = 0
// nextTick 数据改变之后,视图改变之后的回调
// 等待页面渲染之后,重新执行计算。否则在 item 没有指定过高度的前提下,计算出的 item 高度会不正确
nextTick(reset)
reset()
老师,这个是waterfull组件里面的监听列宽计算的代码
老师,在f12切换的时候这个都没有打印
你这样写是不会打印的,因为他只在 setup 函数中打印了一次。
你好
你的 watch 监听是怎么写的? 如果要监听 prop 那么需要指定一个 getter 的函数
老师您看下我的回复在上面
登录后可查看更多问答,登录/注册
42 种前台常见业务模型, 15 种中台通用组件,成为前端提效高手
771 1
1.9k 3
1.0k 1
1.1k 2
1.1k 1
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号