【问题标题】:How mutate data in method computed?如何计算方法中的变异数据?
【发布时间】:2021-12-31 10:00:01
【问题描述】:

我在 Vue 3 上。我有一个 onclick 方法,它应该修改我的 props 的值,它是一个布尔值,我尝试了几种方法,我设法输入了计算方法,但是我的 props 的值不变

我注册了我的数据

data() {
 return {
  showConsommationWindow: false
 }
}

然后我尝试了 3 种方法来更改值,但都没有奏效。 第一个:

<submit-button v-on:click="showConsommationWindow = true" />

第二个:(警报执行但数据值不变)

<submit-button v-on:click="showConsommation(true)"/>

  methods: {
    showConsommation(boolValue){
        alert('false')
        this.showConsommationWindow = boolValue;
      }
  }

最后一个:

<submit-button v-on:click="showConsommation"/>

  methods: {
    showConsommation(){
      if (!this.showConsommationWindow) {
        alert('false')
        this.showConsommationWindow = true;
        return
      }
      this.showConsommationWindow = false;
    }
  },

我真的不明白为什么我的数据不能变异,谢谢你的帮助。

【问题讨论】:

    标签: vue.js methods mutated


    【解决方案1】:

    如果 value 来自 props,则意味着 parent 将布尔值分配给 component。所以如果你想改变布尔值,你应该这样做:

    // in parent
    
    <Component :booleanValue="myBoolean" @changeBooleanValueEvent="changeMyBoolean" />
    
    ...
    
    data() {
      return {
        myBoolean: true
      }
    }
    
    methods: {
      changeMyBoolean(value) {
        this.myBoolean = value
      }
    }
    
    // in component
    
    props: {
      booleanValue: {
        ...
      }
    }
    
    methods: {
      showConsommation() {
        this.$emit('changeBooleanValueEvent', false)
      }
    }

    【讨论】:

    • 谢谢,我的做法不同,但您的回答让我走上了正轨。我已经将我的组件包装在一个 div 中,我只需点击这个 div
    • 没问题@Péah enjoy :)
    猜你喜欢
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多