我开始使用Vue 3,并创建了一些基本的应用程序添加项目到列表。
我有两个组件:ItemList和ItemForm。这两者都添加到主App.vue组件中,如下所示:
应用程序版本-简化版
<template>
<ItemsList/>
<ItemForm/>
</template>
在ItemsList中,我有一个名为“items”的属性。还有一个函数addItem(),用于向列表中添加新项。
在ItemForm中有一个表单,在提交时,我希望将此数据从表单发送到ItemsList组件以更新列表视图
我检查了一些东西,没有为我工作(我读到,在Vue 2是EventBus这是用于这种情况).我不想也学习一些坏的方法来解决问题,所以我向你寻求帮助.
编辑次数
应用程序版本
<template>
<div>
<ItemsList/>
</div>
<div>
<ItemForm/>
</div>
</template>
<script setup>
import ItemForm from "@/components/ItemForm";
import ItemsList from "@/components/ItemsList";
</script>
物料表单版本
<template>
<form v-on:submit="addItem">
<input type="text" v-model="title"/>
<textarea v-model="description"></textarea>
<button>Add item</button>
</form>
</template>
<script>
export default {
data() {
return {
title: '',
description: ''
}
},
methods: {
addItem(e) {
e.preventDefault();
}
}
}
</script>
项目列表版本
<template>
<ul>
<li v-for="item in items">
<p><b>{{ item.title }}</b></p>
</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: []
}
},
methods: {
addItem: function(item) {
this.items.push(item);
}
},
}
</script>
2条答案
按热度按时间kq4fsx7k1#
您可能应该使用emits将数据从子组件共享到父组件。我已经设置了一个Vue3 Composition API示例。请在此处查看:
父项:
子项:
r8uurelv2#
我找到了解决问题办法:https://pinia.vuejs.org/
也许有人会需要这个信息。
编辑
您可以使用store管理应用程序中的数据