【问题标题】:How to create a method with props passed to child component (Vue3)如何使用传递给子组件的道具创建方法(Vue3)
【发布时间】:2021-03-16 11:18:54
【问题描述】:

我在启动项目的最后一部分努力将结果输出到它自己的组件中。

我在父组件中创建了一个将结果推送到数组的方法,然后我将该数组作为道具传递给子组件。

如果我只是在我的子组件中显示该数组,它可以正常工作,但是我要做的是然后根据通过 props 传递的结果在我的子组件中创建一个方法。

当我尝试这样做时,我没有得到任何输出,这是您可以在 Vue 中执行的操作吗?

家长:

<template>
  <button @click="decreaseCount">Decrease</button>
  <button @click="increaseCount">Increase</button>
  <div class="counterDiv">Counter: {{ count }}</div>
  <button @click="calculateResults">Submit</button>
  <results v-if="resultsVisible" :results="results"></results>
</template>

<script>
import Results from "./components/Results.vue";
export default {
  name: "App",
  components: {
    Results,
  },
  data() {
    return {
      count: 0,
      results: [],
      resultsVisible: false,
    };
  },
  methods: {
    increaseCount() {
      this.count += 1;
    },
    decreaseCount() {
      this.count -= 1;
    },
    calculateResults() {
      this.results.push(this.count);
      this.resultsVisible = true;
    },
  },
};
</script>

孩子:

<template>
  <div class="finalResults">Results: {{ this.resultsText }}</div>
</template>

<script>
export default {
  props: ["results"],
  data() {
    return {
      resultsText: "",
    };
  },
  methods: {
    returnText() {
      if (results < 10) {
        this.resultsText = "Below 10";
      }
    },
  },
};
</script>

我在下面创建了一个非常基本的问题示例

【问题讨论】:

    标签: vue.js vuejs3


    【解决方案1】:

    您应该从以父方法作为处理程序的子组件发出自定义事件:

    孩子:

    <template>
      <div class="finalResults">Results: {{ this.resultsText }}</div>
    </template>
    
    <script>
    export default {
      props: ["results"],
      data() {
        return {
          resultsText: "",
        };
      },
      methods: {
        returnText() {
          if (this.results < 10) {
            this.resultsText = "Below 10";
          this.$emit('push-item', this.resultsText )
          }
        },
      },
    };
    </script>
    

    在父组件中:

    <results v-if="resultsVisible" :results="results" @push-item="pushResult"></results>
    
    ...
    methods:{
      pushResult(resulttext){...}
    ....
    }
    

    【讨论】:

    • 是否可以编辑代码框示例?我不能让它仍然与你的例子一起工作:(
    • 我的回答只是针对这种情况的一般解决方案,请解释您正在尝试的确切场景
    • 所以当我通过道具时,例如计数器,我想根据子组件中计数器的值写一些文本,我想在子组件中使用的方法是:计数器
    • 你的意思是结果长度吗?
    猜你喜欢
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2018-07-07
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多