Taro 遇到的坑


1.createSelectorQuery無法獲取節點寬高

業務場景: 列表需要在最后一頁底部顯示 ‘我是有底線的~’ 提示,但是如果數據只有一頁且不占滿屏幕的話,就不顯示。需要判斷 ‘我是有底線的~’ 這個節點距離頂部的top值是否超出screenHeight。
 
因為小程序有很多列表需要用到 ‘我是有底線的~’ ,所以把它封裝組件。然后使用
//創建節點選擇器
var query = wx.createSelectorQuery();
//選擇id
var that = this;
query.select('.content').boundingClientRect(function (rect) {
  console.log(rect)
}).exec();
 
結果返回 null !!!
期初以為是動態獲取數據,創建節點的原因,獲取不到節點。后測試選擇定高節點也無法獲得寬高,還用了 ref的方法,只能取到節點,無法獲得寬高。
 
后來終於找到問題所在
 
  createSelectorQuery只能選擇內置組件,不能選擇自定義組件。
將 id 和對應的 query 邏輯放子組件里,自定義組件還需要把 this.$scope傳進去

父組件:

import Taro, { Component } from '@tarojs/taro'
import { View } from '@tarojs/components'
import Child from '../../components/child/child'

export default class PageView extends Component {
  render () {
    return <View>
      <Child></Child>
    </View>
  }
}

 

子組件:

import Taro, { Component } from '@tarojs/taro'
import { View } from '@tarojs/components'

export default class Child extends Component {
  componentDidMount () {
    const query = Taro.createSelectorQuery().in(this.$scope)
    query.select('.line').boundingClientRect().exec(res => {
        console.log(res);
    })
  }

  render() {
    return (
      <View class='line'>我是有底線的~</View>
    )
  }
}

 

2.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM