准备用taro写一个微信小程序,但是没有足够的时间来详细的看api文档,所以就在实际的使用过程中遇到问题了再查技术文档;其中遇到了不少的坑。
1. 点击左侧分类,修改了scrollIntoView的绑定,但是不跳转到指定的位置
查了技术文档,trao的技术文档有这样一句话:
使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height。组件属性的长度单位默认为 px
解决方案:给scroll-view增加高度
2. 数据更新后不能获取到dom节点
由于我是使用的react 函数式组件,所以不能使用this.setData()方法的回调函数内获取dom节点,所以不能按照官网的说法获取dom节点。
最开始的思路是获取到数据后,等页面渲染完成后就立马获取dom节点的位置,所以我使用了setTimeout来调用getHeightList方法,然后最后返回的是null;反复看了官方尝试了各种方法后,我决定用useEffect监听data变化后再获取dom节点位置,结果成功了。看代码!!!
useEffect(() => {
getClassifyList();
}, []);
// 监听到data变化后再获取dom节点位置
useEffect(() => {
Taro.nextTick(() => {
getHeightList().then((re) => console.log(re, '777'));
});
}, [menus]);
const getClassifyList = async () => {
const res = await getClassify();
setMenus(() => res.data.lists);
setListId(res.data.lists[0]?.menuid);
};
const getHeightList = () => {
const query = Taro.createSelectorQuery();
query.selectAll('.class-title').boundingClientRect();
return new Promise((resolve, reject) => {
query.exec((res) => {
resolve(res);
});
});
};