发布时间:2024-01-25 13:30
vue2 的 options API
// src/components/UserRepositories.vue
export default {
components: { RepositoriesFilters, RepositoriesSortBy, RepositoriesList },
props: {
user: {
type: String,
required: true
}
},
data () {
return {
repositories: [], // 1
filters: { ... }, // 3
searchQuery: '' // 2
}
},
computed: {
filteredRepositories () { ... }, // 3
repositoriesMatchingSearchQuery () { ... }, // 2
},
watch: {
user: 'getUserRepositories' // 1
},
methods: {
getUserRepositories () {
// 使用 `this.user` 获取用户仓库
}, // 1
updateFilters () { ... }, // 3
},
mounted () {
this.getUserRepositories() // 1
}
}
// src/components/UserRepositories.vue `setup` function
import { fetchUserRepositories } from '@/api/repositories'
import { ref } from 'vue'
// 在我们的组件中
setup (props) {
const repositories = ref([])
const getUserRepositories = async () => {
repositories.value = await fetchUserRepositories(props.user)
}
return {
repositories,
getUserRepositories
}
}
vue3 中 v-if 比 v-for 优先级更高,而 vue2 中 v-for 优先级更高
由于 vue3 使用 typeScript 重构了,所以对 ts 的类型提示特别友好
mixin 由于会导致变量来源不明确等问题,所以 vue3 借鉴了 react 中很强大的 hooks
低情商:我们抄了 react 的 hooks
高情商:我一部分的灵感来自于 react 中的 hooks