收藏
回答

创建'2d'canvas出现Cannot read 'node' of null的问题?


想创建一个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])

})

}

回答关注问题邀请回答
收藏

6 个回答

  • smile
    smile
    2023-11-02

    在自定义组件或包含自定义组件的页面中,应使用 this.createSelectorQuery() 来代替wx.createSelectorQuery()

    把 组件的this 当做参数传给 工具类进行替换就行。

    2023-11-02
    有用 2
    回复
  • 2021-09-13

    使用 taro-vue 进行组件封装时遇到同样报错,将 canvas 初始化放到 Taro.nextTick 里执行即可。

    2021-09-13
    有用 2
    回复
  • 回眸
    回眸
    2022-06-14

    <canvas id="firstCanvastype="2d"></canvas>

    wx.createSelectorQuery().select('#firstCanvas').fields({node:true,size:true}).exec((res) => {

    这样写,还是报TypeError: Cannot read property 'node' of null。不知为啥?

    2022-06-14
    有用
    回复 4
    • 小弟
      小弟
      2022-08-12
      我也是这样,请问解决了吗
      2022-08-12
      回复
    • 陶印
      陶印
      2022-08-24
      在createSelectorQuery()后面加个.in(this),就可以了
      2022-08-24
      11
      回复
    • Carlos
      Carlos
      2023-08-07回复陶印
      有用!
      2023-08-07
      1
      回复
    • Ken
      Ken
      01-29回复陶印
      真的解决了?
      01-29
      回复
  • SuperMan
    SuperMan
    2020-08-10

    我都2.12.0都是返回null

    2020-08-10
    有用
    回复 1
    • SuperMan
      SuperMan
      2020-08-10
      解决了,原来是要指定type="2d"的,我用的 taro
      2020-08-10
      1
      回复
  • 柯宇
    柯宇
    2020-03-09

    库的版本还得在2.8.1以上,否则也是报null的错

    2020-03-09
    有用
    回复
  • WeiYuan
    WeiYuan
    2020-03-01

    艾玛,我这白痴问题提的真有问题啊

    感谢啊

    2020-03-01
    有用
    回复 3
    • 万有青年
      万有青年
      2020-04-30
      怎么解决的呢
      2020-04-30
      回复
    • 成风
      成风
      2020-05-29回复万有青年
      修改基础库,然后楼主那个canvas的id写错了,老版本是canvas-id,新版本直接是id
      2020-05-29
      2
      回复
    • 可乐
      可乐
      05-03
      牛逼,兄弟。完美解决了。开启2D性能直接起飞
      05-03
      回复
登录 后发表内容
问题标签