收藏
回答

如何解决组件component中调用onLoad时报错问题?

如何解决组件component中调用onLoad时获取options参数报错,显示Cannot read property 'dstid' of undefined;?

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

3 个回答

  • brave
    brave
    05-21

    子组件里并没有Page中的onLoad生命周期,也没有办法直接获取到页面传参值。只能在父组件传值给子组件后再处理。

    05-21
    有用 1
    回复 2
    • 郑志纲
      郑志纲
      05-21
      但是官方文档有这个例子
      05-21
      回复
    • brave
      brave
      05-21回复郑志纲
      看标题了吗????使用 Component 构造器构造页面,相当于你是自己写一个类似Page的实例
      05-21
      回复
  • xy
    xy
    05-21

    onload里面加层判断 if(options&&option.dstid)

    05-21
    有用
    回复 3
    • xy
      xy
      05-21
      判断换一下
      05-21
      回复
    • 郑志纲
      郑志纲
      05-21
      但是获取不到options的值了,比如我分享这个页面出去,设置了一个参数值,进来是获取不到的
      05-21
      回复
    • xy
      xy
      05-21回复郑志纲
      不知道你在干什么
      05-21
      回复
  •  
     
    05-21

    你调用 this.onLoad(),并没有传递参数,然后你在 onLoad 函数里去读取参数当然报错啊

    05-21
    有用
    回复 2
    • 郑志纲
      郑志纲
      05-21
      其实我是希望在component中执行onload的,但是像官方文档这样写并没有执行onload,所以我在ready中调用onload,然后我穿options也还是会报错的,这种情况该怎么解决
      05-21
      回复
    •  
       
      05-21回复郑志纲
      emmm...
      第一,ready 函数里没有 options 这个变量,所以你这还是报错。
      第二,component 中没有 onLoad 生命周期,所以你写的这个 onLoad 对于小程序来说只是一个普通函数,
      第三,不建议手动调用 生命周期函数
      第四,如果你实在是要在 component 中 调用 page 的 onLoad 生命周期,可以在组件里抛出一个事件,由页面的函数接收事件然后手动调用 onLoad 函数(非常非常不建议,但最后还得看你自己了)
      第五,建议的方案:如果你确实有业务需求需要在页面 onLoad 时执行某个逻辑,然后在 component 渲染完成的时候再执行相同的逻辑,你可以将相同的逻辑提取成 公共函数 或者 模块,你就可以在 onLoad 中、在 component 渲染完成时调用 公共函数 或 模块了,这样就没有直接调用生命周期函数了
      05-21
      回复
登录 后发表内容
问题标签