收藏
回答

component内使用setData改变值没有反应?

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

2 个回答

  • ...
    ...
    2023-08-08

    在methods里的setdata不起作用,在生命周期中setdata可以使用,例如attached

    2023-08-08
    有用 1
    回复
  • Xavier
    Xavier
    2021-02-06

    你在组件里面 setData 当然是不会影响到父组件的 data 的。

    要么你就把 wx:if 写到组件里面,要么你就用 triggerEvent 来触发父组件的事件


    1.条件渲染写到组件里

    <!-- advert_data.wxml -->
    <view wx:if="{{hasUserInfo}}">
      <view>content</view>
      <slot></slot>
    <  /view>
    


    2.调用父组件事件

    <!-- index.wxml -->
    <view wx:if="{{hasUserInfo}}">
      <advert_data unit_state="2"
        unitid="{{myunitid}}"
        bind:setHasUserInfo="setHasUserInfo"/>
    </view>
    


    // advert_data.js
    setHasUserInfo() {
      this.triggerEvent("setHasUserInfo", {hasUserInfo: true});
    }
    // index.js
    setHasUserInfo(hasUserInfo) {
      this.setData({
        hasUserInfo
      })
    }
    


    相对来说把条件渲染写到组件里面更加简单,改动更小。

    2021-02-06
    有用 1
    回复 4
    • 被光包裹的荞麦面包
      被光包裹的荞麦面包
      2021-02-06
      这个data不是父类里头的
      2021-02-06
      回复
    • 被光包裹的荞麦面包
      被光包裹的荞麦面包
      2021-02-06
      2021-02-06
      回复
    • Xavier
      Xavier
      2021-02-06回复被光包裹的荞麦面包
      就是说你的第一个截图本来就是个组件?组件里面有一个advert_data组件???
      我看到你js部分的lifetimes判断它是个组件,还以为你是在组件里面没办法通过setData更新。
      2021-02-06
      回复
    • 被光包裹的荞麦面包
      被光包裹的荞麦面包
      2021-02-06回复Xavier
      谢谢你的回答,我决定放弃这个方式,用别的方式实现了
      2021-02-06
      回复
登录 后发表内容
问题标签