component内使用setData改变值没有反应?
发布于 6 年前 作者 jing65 5007 次浏览 来自 官方Issues

1 回复

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

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

回到顶部