吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1147|回复: 8
收起左侧

[求助] uniAPP或vue条件渲染异步问题

[复制链接]
as614001 发表于 2022-4-2 23:09
本帖最后由 as614001 于 2022-4-2 23:38 编辑
                                        <view class="text-gray text-sm" v-if="gg(item)" >
                                                <text class="cuIcon-lightfill text-yellow  margin-right-xs"></text>有更新</view>
                                        <view class="text-gray text-sm">
                        gg(book){
                                var q=false;

                                 this.getBookUpdateInfo(book).then(function(res){
                                        console.log(res);
                                        q=res;
                                });
                                return q;
                        },
                        async getBookUpdateInfo(book){

                                //很长很多...
                        }

再做个检查书籍有没有更新的
有个条件渲染需机选返回确认状态,希望是直接返回,不需要在绑定一个变量来决定。因为其实是个v-for循环,会有很多,通过this.变量定义有点麻烦。
表达可能不清楚,因为不会vue 也不会js。
现在的情况是 没有等getBookUpdateInfo返回就已经异步q返回了。

如果给gg加了async 那么在 v-if返回其实是个 new Promise 对象。永远都成立渲染。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

猛浪若奔 发表于 2022-4-3 09:34
老哥这种行为应该是行不通的,Vue的双向绑定是在data里声明好的,你的这个方法是立即执行的,Promise有了结果之后并不会再触发一次渲染
Elaborate 发表于 2022-4-3 10:37
async 和await 成对使用 await new Promise() 这样试试 只能异步转同步了
PPZ丿皮皮智 发表于 2022-4-3 10:42
看了一下。楼主好像是不想多设置一个变量去控制v-if吧。那哥你有没有想过,这函数。每次页面渲染只调用一次啊。再者小说更新了之后我点进去看了按照这个逻辑“”有更新“”这个提示应该也不会消失吧?【不清楚你那个获取信息的函数怎么写的】,对于前端来说用来控制页面渲染的变量别省就是了
PPZ丿皮皮智 发表于 2022-4-3 10:50
对于Promise 你可以改成这样
[JavaScript] 纯文本查看 复制代码
async gg(book){
                                 let q = await this.getBookUpdateInfo(book);//异步等待
                                 console.log(q);
                                 return q;
                        },
 楼主| as614001 发表于 2022-4-3 11:21
PPZ丿皮皮智 发表于 2022-4-3 10:50
对于Promise 你可以改成这样[mw_shl_code=javascript,true]async gg(book){
                             ...

这个在v-if中 不会返回q=false 或者 true 而是返回 promise对象;对于v-if会永远是真。
放弃这个写法了。
 楼主| as614001 发表于 2022-4-3 11:22
PPZ丿皮皮智 发表于 2022-4-3 10:42
看了一下。楼主好像是不想多设置一个变量去控制v-if吧。那哥你有没有想过,这函数。每次页面渲染只调用一次 ...

不能偷懒太难受~
lcbreak 发表于 2022-4-3 11:35
用computed 计算属性呢,将gg这个函数放计算属性里面,然后返回gg函数获取的值是true还是false
PPZ丿皮皮智 发表于 2022-4-7 10:14
as614001 发表于 2022-4-3 11:21
这个在v-if中 不会返回q=false 或者 true 而是返回 promise对象;对于v-if会永远是真。
放弃这个写法了 ...

await会异步等待结果返回才会return的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表