18910140161

循环中多次修改变量,页面只刷新一次

顺晟科技

2021-07-21 12:00:08

209


顺晟科技:

这个代码我截的有问题…,上边使用let thiz = this的定义,而且我通过你次回答的sync深度监听方式实现了我想要的效果percent: {handler:function(newV,oldV){this.percentNum = newV;},sync: true},我使用进度组件监听新的percentNum属性后可以实现我想要的效果,谢谢解决了我的大问题

sync这个方法只是想解答一下原问题。实际生产项目中还是不要使用了,毕竟官方文档都没有提到这点。

不止是优雅不优雅的问题。sync这个选项官方并没有给出,只是通过查看源码得出的骚操作罢了,所以这样并不是一个好的解决办法。

这是是全的代码,但是我发现好像还是不能让组件监听到数据变化,还正在测试…

谢谢回复,实际我这个只是我遇见问题后的测试代码,心中疑惑已经解决,回答楼上的为实际应用中需要解决的问题,希望帮忙解答

因为我看不到你其他代码,不清楚是否有别的问题影响到它。我没有用过 uni-app,但这是刚刚在我的项目用 elment-ui 的进度条测试的代码,150ms还是可以比较清晰地看到进度条的变化。

恩,已删除,不过这个确实解决了我心中的疑惑

为什么你的代码里看到了 thiz 而不是 this

标签渲染的问题,你需要通过监听,获取到完整的数组logs之后再进行页面渲染。而不是同步进行。根据楼上所说,同步更新的效果是有办法实现的,但是官方并不提供方法,这会比较费力。

而且上面截图中的好多变量我都不知道来自哪里

谢谢!彻底解答了我心中的疑惑,还有一个问题,跟这个类似,我有x个请求,需要在一个for中循环请求,每次请求成功后,data中的属性增加指定百分比。页面有个进度条,监听data中的这个属性增加进度,而现在的问题就跟前一个问题一样只能监听到最后一次,也就是直接达到,而这个进度条是我用的uni-app框架提供的,无法修改组件代码,请问有没有办法,虽然我已经使用定时器形式实现,但总感觉不太优雅

上边的代码中,logs为啥只有一条数据,number改变了多次,却只监听到最后一次修改,不懂vue的监听原理,求大神给解答一下,不要问我为啥要这么写,我只是想知道原理原因

这个是我实际遇到的问题,上面的是我根据这个问题做的测试,我已经知道了watcher怎样同步更新,但是在使用组件而又无法修改组件的情况下,却不知道能不能同步通知组件刷新

实际上,watcher 是可以实现你想要的同步更新效果的,只需要将 sync 选项设置为 true 即可。而官方文档关于 watchoptions 的介绍中并没有提到这个选项,很显然官方并不希望用户自己创建同步更新的 watcher,因为这可能会带来一些不必要的视图更新和性能问题。详见官网对 异步更新队列 的描述。

借用你的话说,总感觉这样也不是太优雅。

我使用你这个代码确实是走的,不确定是不是ajax的影响或者其他原因,其他好像是能影响他的,我需要再看一下,确实我自己也感觉这样还不够优雅 ,但是因为是vue新人,目前没有想到其他优雅实现的方法 ,原来的考虑是等之后精深了再优化…

恩,目前看不使用sync,好像你上边的代码是可以实现效果的,但是不知道我的为啥不可以…

不过我自己的watch倒是每次都会走,只不过组件的watch好像是不能同步监听

我观察了下,我觉得你的代码主要的问题不是watch监听的问题,是

没关系,还是谢谢解答

我上次的回答有误,已经删除。我在vue3里面用compositionAPI的方式试验了一下,每次改变都会往数组里面push一次。实时更新的。至于vue2的情况,不测试了。非常抱歉,上次回复草率了。

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航