收藏
回答

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

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

1 个回答

  • จุ๊บXavier
    จุ๊บXavier
    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
      })
    }
    


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

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