收藏
回答

this.selectComponent is undefined

这个错误由于捕获不到 直接是上报上来的


this.selectComponent is not a function. (In 'this.selectComponent("#tabbar")', 'this.selectComponent' is undefined);at "pages/index/index" page lifeCycleMethod onLoad function 是不是不能在onLoad调用this.selectComponent?

微信版本:6.5.7

大多都是安卓机型

回答关注问题邀请回答
收藏

5 个回答

  • LastLeaf
    LastLeaf
    2018-07-24

    你好,selectComponent 需要在页面有自定义组件时或在自定义组件中才可使用。


    如果是现网上的报错,很可能是由于微信版本较低导致的。低于 1.6.3 的基础库版本没有自定义组件支持。

    2018-07-24
    有用
    回复 6
    • 2018-07-24

      可以确定的是 我的页面上有用到组件

      <view class="container tabbar-page">

          <tabbar id="tabbar"></tabbar>

      </view>


      json:

      {

          "backgroundTextStyle": "dark",

          "enablePullDownRefresh": true,

          "usingComponents": {

              "tabbar": "../../components/tabbar/tabbar"

          }

      }


      js:

      onLoad: function () {

          this.tabbar = this.selectComponent('#tabbar');

      }


      微信后台设置



      按理说低于1.6.4不可能进得来

      我也束手无策了, 现在改成了通过组件的

      properties的observer

      方法监听来值的改变做相应的处理,能实现我的需求

      2018-07-24
      回复
    • LastLeaf
      LastLeaf
      2018-07-24

      应该是这么个问题:有部分很老的客户端会忽略后台的最低版本设置,也就是说,这几个很老的客户端版本仍然可以进入你的小程序来引发这个错误。这部分用户的占比很低 <<1% ,如果你不想忽略这一小部分用户的话,可以在进入小程序时判断基础库版本号,做一个提示。

      2018-07-24
      回复
    • TUTUSONG
      TUTUSONG
      2020-02-20
      想请问一下 使用this.selectComponent在页面中获取引入组件的实例一般在页面中的哪个生命周期里调用合适一些?
      2020-02-20
      回复
    • LastLeaf
      LastLeaf
      2020-02-20回复TUTUSONG
      只要组件存在,什么时候引入都是一样的(只要你能拿到页面的 this 对象)。如果组件在 wx:if 下面,这种时候需要 if 分支为真的时候获取。
      2020-02-20
      回复
    • TUTUSONG
      TUTUSONG
      2020-02-20回复LastLeaf
      好的 感谢
      2020-02-20
      回复
    查看更多(1)
  • 工号 9527
    工号 9527
    2018-07-24

    你自己写的函数?

    2018-07-24
    有用
    回复 7
    • 2018-07-24

      是微信自有的


      2018-07-24
      回复
    • Galina
      Galina
      2018-07-24回复工号 9527

      啊?可以用的啊。 我在用啊,selectComponent。

      2018-07-24
      回复
    • 工号 9527
      工号 9527
      2018-07-24回复Galina

      忽略我,有专业的来回答了

      2018-07-24
      回复
    • 張澤偉。
      張澤偉。
      2019-08-03回复Galina
      为什么传入一个class ,但是却是空啊。,
      2019-08-03
      回复
    • Galina
      Galina
      2019-08-08回复張澤偉。
      在自定义组件上写了class的? 我一般喜欢用id。正常的呀 this.selectComponent('#sku')
      2019-08-08
      回复
    查看更多(2)
  • 車句
    車句
    2018-08-16

    如果使用 wx:if 控制组件的展示与隐藏,在wx:if = false时,this.selectComponent() 获取到值是null

    2018-08-16
    有用 1
    回复 1
    • 40哥哥。
      40哥哥。
      2021-09-14
      正解,保证调用的组件没有处于wx:if 隐藏状态
      2021-09-14
      回复
  • zu
    zu
    2022-11-21

    我也遇到了这个问题,引用了第三方标签库。我发现只要有隐藏属性都会存在,基础库2.27.2 我怀疑是微信的小程序的bug

            <view wx:if="{{pet.key == 4}}">

              <l-input id="petTypevalue="{{pet.type}}" hide-label showRow="{{false}}" placeholder="请输入宠物名required="{{true}}"/> 

            </view>

          </l-form-item>



    2022-11-21
    有用
    回复
  • 2018-08-05

    我也遇到这个问题,蹊跷的是我选择两种不同的编译模式下,一种编译 模式可以,另一种编译模式就会出现这个问题,返回的是null,取不到对象。

    后来我就没有在index.js中使用this.selectComponent方法,在其他功能中使用这个方法没问题。

    2018-08-05
    有用
    回复 1
    • 2018-10-17

      .json文件的格式不对也会导致这个问题。

      正确的格式内容如下:


      {  "usingComponents": {    "pwddialog":"../components/pwddialog/pwddialog"  }

      }

      2018-10-17
      回复
登录 后发表内容