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.
