点赞数据的实时更新,但uniapp中this.refs获取不到对象

uniapp在数据循环列表中,即使通过数据的唯一值设置了每一条数据的唯一ref属性值,this.refs也获取不到对象,那么当用户对某一条数据“点赞”时,如何使界面数据实时更新呢?

情况一:点赞数据从数据库中获取(实时点赞数据存储在数据库中)

下列代码中activityList为从数据库中读取的数据,除了名称name、点赞数量likes,还有很多其他属性,此处为了代码简洁,已省略。


<view class="work-item" v-for="(item,index) in activityList" :key="index">
    <view class="code">{
  
  { item.id }}</view>
    <view class="left">{
  
  { item.name }}</view>
        <view class="right">
          <view class="bottom">
            <view class="like">{
  
  { item.likes }}</view>
            <view class="btns">
              <u-button shape="circle" :customStyle="{width:'130rpx' ,height:'40rpx',lineHeight:'40rpx',color:'#1661fb',background:'#d2e1ff',fontWeight:700,border:'none',fontSize:'20rpx'}" 
                 @click="activityVote(item.id,index)">点赞</u-button>             
            </view>
          </view>
  
### 在 UniApp 中使用 `this.$refs` 访问子组件或 DOM 元素 #### Vue 组件中的 `$refs` Vue 提供了 `$refs` 属性来访问子组件实例或 DOM 元素,在标准的 Vue 应用中,可以通过此方式直接操作子组件的方法和属性[^1]。 ```html <template> <div> <child-component ref="myChild"></child-component> <button @click="callChildMethod">Call Child Method</button> </div> </template> <script> export default { methods: { callChildMethod() { this.$refs.myChild.someMethod(); } } } </script> ``` #### 小程序环境下的特殊处理 然而,在开发基于 UniApp 的小程序时,由于微信小程序本身的特性不支持直接操作 DOM,因此传统的 `$refs` 方式会遇到一些局限性。对于希望获取特定节的情况,推荐采用官方提供的查询接口 `uni.createSelectorQuery()` 来替代直接通过 `$refs` 获取 DOM 节的方式[^2]。 ##### 使用 `uni.createSelectorQuery()` 查询页面上的某个元素 当需要在小程序环境下查找并操作某一个具体的视图层对象时: ```javascript // 假设要选择 id 为 'specificElement' 的元素 const query = uni.createSelectorQuery().in(this); query.select('#specificElement') .boundingClientRect(rect => { console.log('The element position is:', rect); // 打印出该元素的位置信息 }) .exec(); ``` 另外值得注意的是,在 APP 和小程序平台上,如果尝试引用内置组件(如 `<view>`),或是由 v-for 循环动态生成的自定义组件,则不应依赖于 `ref` 特性来进行交互;此时应当考虑其他设计模式或者利用框架所提供的生命周期钩子函数实现所需功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值