【问题标题】:child component property not being updated when mounted()mount() 时子组件属性未更新
【发布时间】:2017-07-02 02:39:02
【问题描述】:

我在父组件中有以下标记

....
<div class="container-fluid">
          <claims :userID="userId"></claims>
          <claimForm :claimID="claimId" v-if="isDistributor"></claimForm>
          </div>
        </div>
      </div>
      <div class="col-lg-6">
        <div class="row">
          <display :claimID="claimId"></display>

 ...........
 data(){ return { claimId: null } },
 beforeMount(){
        this.userId = this.isDistributor? this.currentUser.id: null

        this.eventEmitter.$on('claim.details', function(id) {
          this.claimId = id
        })
      }

然后在称为&lt;display&gt;的子组件中

, watch: {
      .....
      claimID: function(n) {
        console.log('claim');
        if(n == null) return false

        this.getClaimById()
      }
    .....

当事件总线this.eventEmitter.$emit() 被发射时,父组件数据claimdId 被更新但是子组件的claimID 属性似乎没有被更新,因此“监视”没有被触发。

什么会导致属性不更新?

【问题讨论】:

    标签: vuejs2 vue-component vue.js


    【解决方案1】:

    正如here解释的那样:

    HTML 属性不区分大小写,因此在使用非字符串模板时,camelCased 的道具名称需要使用它们的 kebab-case(连字符分隔)等效项:

    所以你的代码应该是:

    <claimForm :claim-iD="claimId" v-if="isDistributor"></claimForm>
    

    【讨论】:

    • 感谢您的洞察力,但是当我也这样做时,它仍然无法正常工作,但是出于某种原因使用实际值 &lt;.... claimID="18" v-if....&gt; 可以工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 2019-01-16
    • 2022-01-15
    • 1970-01-01
    • 2021-05-29
    • 2017-11-18
    • 1970-01-01
    相关资源
    最近更新 更多