我是做了个新闻缓存:
注意对比红绿色:
绿色:之前直接往对象塞,
红色:就是因为这个!坑跨过去了。
吧请求的数据传递给组件渲染
组件接受到,监听器监听到复赋值然后渲染:
回头看:
如果绿色的话,逻辑是通的,但是! 监听器深度监听的时候不会监听到你长度发生改变!即使你有deep深度监听【也能说错,如果错!请指正!】,这个问题苦苦困扰了我好久好久 ,搞得我直接吧缓存干掉,今天早上我又回去优化,重新构建代码,
最后一个早上也没成功,翻阅了好多资料【自己Vue基础不扎实】,发现了一句话:
如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。
那么!我就知道了,为什么监听器只监听到一次,后面长度、值变化他都不管了,因为 即使你对象发生变化也好,Vue还是没有 时实 的传递给 “新闻容器组件” ,那么:
用$set即可,用了他就会更新响应式达到时实效果。
有错误球球指正!!!!!千万!!!!!一起交流一起学习!
完.
2022年7月12日 15:02:44
其实解决这个很简单,也不用用到this.$set
数组他不是不会事实更新,因为我是点击了选项,然后去加载数据,数据回来了渲染,恰好渲染的太快,数据加载太慢,造成的,所以我们可以:
写法:
加上等待框,让等待框转,这时候渲染的是等待框,到时候你数据回来了,你再去渲染数据,那就完美解决。
其实早就解决了,一直找不回来这个博客,现在找到了,就顺便写下。
2022年10月15日 13:57:27:参考别人总结的方法,随便看到记录一下
问题:
1)因为父组件有缓存等因素,子组件创建后没有释放,传入参数无效
2)父组件的tab切换, 导致子组件一直存在, 没有刷新
解决方法:
方案一: 只要让子组件强制刷新就可以获取到props传递过来的值了, 使用v-if的特性(销毁和重建)可以强制刷新子组件
如果是刷新某个子组件,则可以通过v-if指令实现。我们知道,当v-if的值发生变化时,组件都会被重新渲染一遍。因此,利用v-if指令的特性,可以达到强制刷新组件的目的。
方案二: 使用this.$forceUpdate强制重新渲染
如果要在组件内部中进行强制刷新,则可以调用this.forceUpdate强制重新渲染组件,从而达到更新目的。