import { SearchOutlined } from '@antdv-next/icons'; import { computed, defineComponent, ref, watch } from 'vue'; import { useRoute, useRouter } from 'vue-router'; import ArticleList from '@/components/blog/ArticleList'; import BlogLayout from '@/components/blog/BlogLayout'; import PageInfoCard from '@/components/blog/PageInfoCard'; import { BlogButton, BlogCheckbox, BlogForm, BlogInput } from '@/components/blog/antdvComponents'; import { useBlogArticles } from '@/hooks/useBlogArticles'; export default defineComponent({ name: 'BlogSearchPage', setup() { const route = useRoute(); const router = useRouter(); const keyword = ref(String(route.query.q ?? '')); const filters = ref(['post', 'page']); const { searchArticles } = useBlogArticles(); const resultArticles = computed(() => searchArticles(keyword.value)); watch( () => route.query.q, (value) => { keyword.value = String(value ?? ''); }, ); const submitSearch = () => { router.push({ name: 'BlogSearch', query: { q: keyword.value.trim() }, }); }; return () => ( (
{[ { label: '文章', value: 'post' }, { label: '页面', value: 'page' }, { label: '说说', value: 'shuoshuo' }, ].map((item) => ( { const nextValues = filters.value.filter((value) => value !== item.value); if (event.target.checked) { nextValues.push(item.value); } filters.value = nextValues; }} > {item.label} ))}
搜索
), }} >
); }, });