小程序中使用components方法selectComponent遇到的坑 返回为null

Posted webrain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序中使用components方法selectComponent遇到的坑 返回为null相关的知识,希望对你有一定的参考价值。

前言:哎呦气死了,小程序等着发布审核得时候 发现了一个bug,selectComponent获取不到组件了,返回值一直为null

原因居然是因为 wx:if  , 代码如下,无论if是true还是false  都获取不到组件,去掉wx:if 就可以了  记录一下  希望大家可以避开,网上百度了一下,很少这个问题得记录。

<view class="address" hover-class="none" hover-stop-propagation="false" wx:if="{{detailData.status == ‘ONLINE‘}}">
  <span class="van-row-label">送至</span>
   <span class="address-info" bindtap="selectAddress">{{addressValue === ‘‘ ? ‘请选择收货地址+‘ : addressValue}}</span>
  <selectAddress id="selectAddress-modal" bind:getSelectedAddress="getSelectedAddress"></selectAddress>
</view>

那就顺便记录一下,如何获取组件吧。

  1. json 文件中引入了该组件
{
  "usingComponents": {
  "selectAddress":"../../../components/selectAddress/selectAddress"
  }
}


  1. 父组件 wxml 文件中使用了这个组件并且设置了一个 id 或者是 class 类样式   (我下面都是用id  class也是一样的和样式命名方式一样)
  <selectAddress id="selectAddress-modal"></selectAddress>
  1. 父组件 js 文件中传递了正确的选择器获取子组件对象

  

    Page({
        onReady(){  //onReady或者 onLoad里面先取值都是可以的
            // (大坑)切记下面参数不能传递标签选择器(selectAddress),不然返回的同样是 null 
           this.selectAddressModal = this.selectComponent("#selectAddress-modal"); 
        }
    })

 

以上是关于小程序中使用components方法selectComponent遇到的坑 返回为null的主要内容,如果未能解决你的问题,请参考以下文章

小程序中components的使用

微信小程序Component组件调用回调函数this指向不是本页面

小程序微信小程序自定义组件Component详细总结

小程序template和component的区别

微信小程序父组件使用子组件并传参

小程序项目 (使用uniapp) 创建主要的组件