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

发布于 7 年前作者 jing655113 次浏览最后编辑 7 年前来自 issues

1 回复
tao12
tao121 楼5 年前

你在组件里面 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
  })
}

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