收藏
回答

为什么有的自定义组件在onload中改变自定义组件的数据无效?

在网上扒拉了个自定义多选组件multiple_selection,但是无法在onload使用this.setData更新请求的数据到自定义组件的变量就无效,只能够使用静态的数据,我扒拉的另外一个自定义组件这样就可以,请问这是为什么呢?

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

2 个回答

  • 朝阳
    朝阳
    2020-11-26

    https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html

    • 组件实例刚刚被创建好时, created 生命周期被触发。此时,组件数据 this.data 就是在 Component 构造器中定义的数据 data 。 此时还不能调用 setData 。 通常情况下,这个生命周期只应该用于给组件 this 添加一些自定义属性字段。
    • 在组件完全初始化完毕、进入页面节点树后, attached 生命周期被触发。此时, this.data 已被初始化为组件的当前值。这个生命周期很有用,绝大多数初始化工作可以在这个时机进行


    微信小程序的组件中没有onLoad生命周期,还有就是,在回调函数中使用箭头函数用this是没问题的,用形如function(){}的回调才需要将this引用包装给别的变量

    2020-11-26
    有用
    回复
  • hf
    hf
    2020-11-26

    this的指向问题。

    2020-11-26
    有用
    回复 6
    • 尘缘
      尘缘
      2020-11-26
      啊这,真的吗大佬
      2020-11-26
      回复
    • 尘缘
      尘缘
      2020-11-26
      wx.request({
            url: ;,
            success:(res)=>{
                var new_arr = [];
                for(var i = 0;i < res.data.data.length;i++){
                  new_arr.push({
                    key:res.data.data[i].flag,
                    name:res.data.data[i].name
                  })
                }
                this.setData({
                  multiple_list:new_arr,
                  selNum:new_arr.length
                })
                console.log(this.data.multiple_list,"处理后的数据")
            }
          })
      大佬,我在onload中这样请求数据的啊,没问题啊
      2020-11-26
      回复
    • hf
      hf
      2020-11-26回复尘缘
      let that = this;再setData试试。
      2020-11-26
      回复
    • 尘缘
      尘缘
      2020-11-26
      大佬还是不行啊,能不能在组件的js中请求数据啊?
      2020-11-26
      回复
    • hf
      hf
      2020-11-27回复尘缘
      组件封装出来不是对数据进行公共处理么。你这请求数据算怎么回事...
      2020-11-27
      回复
    查看更多(1)
登录 后发表内容
问题标签