想创建一个2d类型的canvas,采用微信官方文档中的范例,使用wx.createSelectorQuery().select('#').fields({ node: true, size: true }).exec()语句,可调试总是出错,显示Cannot read property 'node' of null;at SelectorQuery callback function。TypeError: Cannot read property 'node' of null。
index.wxml文件
<view class="head-container">
<canvas type="2d" canvas-id="canvasIdPass" style="width: 300px; height: 300px;"></canvas>
</view>
index.js文件
onLoad:function(){
wx.createSelectorQuery().select('#canvasIdPass').fields({ node: true, size: true }).exec(function(res){
const canvas = res[0].node
const ctx = canvas.getContext('2d')
console.log('res[0]', res[0])
})
}
在自定义组件或包含自定义组件的页面中,应使用
this.createSelectorQuery()
来代替wx.createSelectorQuery()。把 组件的this 当做参数传给 工具类进行替换就行。
使用 taro-vue 进行组件封装时遇到同样报错,将 canvas 初始化放到 Taro.nextTick 里执行即可。
<canvas id="firstCanvas" type="2d"></canvas>
wx.createSelectorQuery().select('#firstCanvas').fields({node:true,size:true}).exec((res) => {
这样写,还是报TypeError: Cannot read property 'node' of null。不知为啥?
我都2.12.0都是返回null
库的版本还得在2.8.1以上,否则也是报null的错
艾玛,我这白痴问题提的真有问题啊
感谢啊