【发布时间】:2020-12-20 05:34:15
【问题描述】:
我有这些文件
App.vue、Header.vue、search.js 和 Search.vue
App.vue是正常的,只是添加了不同的视图
Header.vue有输入框
<input type="text" v-model="searchPin" @keyup="searchResults" />
<div>{{searchPin}}</div>
和脚本:
import useSearch from "@/compositions/search";
export default {
name: "Header",
setup() {
const { searchPin, searchResults } = useSearch();
return {
searchPin,
searchResults
};
}
};
search.js 有可复用的代码
import { ref } from "vue";
export default function useSearch() {
const searchPin = ref("");
function searchResults() {
return searchPin.value;
}
return {
searchPin,
searchResults
};
}
现在,它运行良好.. 在输入框中添加内容后,它会显示在下面的 div 中。
我不明白的是如何将这段代码用于像 Search.vue 这样的第三个组件。
我有这个,但它不工作。
<template>
<div>
<h1 class="mt-3">Search</h1>
<div>{{ searchPin }}</div>
</div>
</template>
<script>
import useSearch from "@/compositions/search";
export default {
name: "Search",
setup() {
const { searchPin, searchResults } = useSearch();
return {
searchPin,
searchResults
};
}
};
</script>
我错过了什么?谢谢。
【问题讨论】:
-
“不工作”是什么意思?您能否详细说明您的预期与您所看到的?
-
我试图显示用户在输入字段中输入的内容,但在 Search.vue 文件中。我在所有页面上都有一个带有搜索框的固定标题,每当用户输入时,它都会搜索并在 search.vue 组件中显示结果。所以,我试图让它成为显示用户输入的基础。目前,它的空白。使用 Vue 2,我们可以使用事件总线,但不确定如何使用组合 API。
-
如果我理解正确,您希望数据在整个应用程序中保持不变,对吗?
-
是的,我只是想在标题上搜索并在 search.vue 组件上显示结果。
标签: vue.js components vuejs3 vue-composition-api