从 vue.js 3 中传递数据的方法渲染组件

Posted

技术标签:

【中文标题】从 vue.js 3 中传递数据的方法渲染组件【英文标题】:Render component from method passing data in vue.js 3 【发布时间】:2021-09-29 12:21:14 【问题描述】:

我正在尝试从 vue.js 3 中父模板中存在的方法调用组件。 这个想法是当我点击一个按钮时,子组件会被调用一些数据并呈现在特定的部分。

App.vue

<span v-on:click="callChildComponent">Call Child</span>
<ChildComponent :tagId="0" />
....
<script>
import ChildComponent from ...

export default 
  components: 
    ChildComponent
  ,
  data() 
    return 
      tagId: ''
    
  
  ...
  methods: 
  callChildComponent: function()
    ????
  
  ...
</script>

ChildComponent.vue

<template>
  <div> tagId 
</template>
<script>
export default 
  ...
  props: 
    tagId: Number
  

</script>

也许这不是正确的方法......

感谢任何帮助。谢谢!

【问题讨论】:

【参考方案1】:

您可以在要渲染的组件中使用 v-if。 v-if 值将是一个布尔本地数据属性,您可以使用您创建的 callChildComponent 函数进行切换。

<span v-on:click="callChildComponent">Call Child</span>
<ChildComponent v-if="showChildComponent" :tagId="0" />
....
<script>
import ChildComponent from ...

export default 
  components: 
    ChildComponent
  ,
  data() 
    return 
      tagId: '',
      showChildComponent: false
    
  
  ...
  methods: 
  callChildComponent: function()
    this.showChildComponent = !this.showChildComponent
  
  ...
</script>

【讨论】:

【参考方案2】:

谢谢@Abregre。

我是这么想的

App.vue

<span v-on:click="callChildComponent">Call Child</span>
<ChildComponent v-if="tagId != null" :tagId="tagId" />
....
<script>
import ChildComponent from ...

export default 
  components: 
    ChildComponent
  ,
  data() 
    return 
      tagId: null
    
  
  ...
  methods: 
  callChildComponent: function(tagId)
    this.tagId = tagId
  
  ...
</script>

ChildComponent.vue

<template>
  <div> tagId 
</template>
<script>
export default 
  ...
  props: 
    tagId: Number
  

</script>

【讨论】:

不错。但仅供参考,从父组件控制 childComponent 渲染更干净。否则,当您使用 v-if 时,它仍在渲染但没有内容。你也可以在你的 childComponent 中为你的 prop 设置一个默认值(null 或任何东西) 当然... 代码已编辑。感谢您的帮助!

以上是关于从 vue.js 3 中传递数据的方法渲染组件的主要内容,如果未能解决你的问题,请参考以下文章

我如何将数据从控制器传递到组件 vue.js

Vue.js 3,Quasar 2 - 组件缺少模板或渲染功能

Vue.js 3 - 将组件插入插槽

将一串数据从父组件传递给子组件。 Vue.js 2

将数据从父模式传递到子模式 - Vue.js

如何在vue js中从组件渲染组件