useEffect(() => {
getTabToTop(); // 获取tabDom距离顶部值
},[])
// 获取tab距离顶部的高度值
const getTabToTop = () => {
const queryDom = Taro.createSelectorQuery();
queryDom
.select("#tab_box")
.boundingClientRect((rec) => {
setTabBoxTop(rec?.top || 0);
if (!rec?.top) {
setTimeout(() => {
getTabToTop();
}, 200);
}
})
.exec();
};
直接上代码。createSelectorQuery必须再DOM渲染完成之后才能取到值,不然就是Null.
之前看别人大部分是写的Set Timeout 500毫秒,如果用settimeout 有一定几率依然获取不到。
我这里使用了递归,如果为Null 继续获取,直到有值,一般第二次就能正常获取了。