为什么需要Composition API?

    想想react的写法 class的写法 定义state属性 然后setState方法都是写在类的原型上

    vue 不同 拓展了 data methods watch computed 等等

    这样使得data 与methods watch computed 脱离了
    所以使用组合api解决上述问题

    vue为啥要搞成这种形式 因为很正常啊 你不写在一块怎么解决关注点问题太大问题

    而且vue作死前期拓展这么拖属性methods watch computed

    不像react处理归为一体 你怎调它方法

    1. import { ref, computed } from 'vue'
    2. export default function useRepositoryNameSearch(repositories) {
    3. const searchQuery = ref('')
    4. const repositoriesMatchingSearchQuery = computed(() => {
    5. return repositories.value.filter(repository => {
    6. return repository.name.includes(searchQuery.value)
    7. })
    8. })
    9. return {
    10. searchQuery,
    11. repositoriesMatchingSearchQuery
    12. }
    13. }
    1. // src/components/UserRepositories.vue
    2. import { toRefs } from 'vue'
    3. import useUserRepositories from '@/composables/useUserRepositories'
    4. import useRepositoryNameSearch from '@/composables/useRepositoryNameSearch'
    5. import useRepositoryFilters from '@/composables/useRepositoryFilters'
    6. export default {
    7. components: { RepositoriesFilters, RepositoriesSortBy, RepositoriesList },
    8. props: {
    9. user: { type: String }
    10. },
    11. setup(props) {
    12. const { user } = toRefs(props)
    13. const { repositories, getUserRepositories } = useUserRepositories(user)
    14. const {
    15. searchQuery,
    16. repositoriesMatchingSearchQuery
    17. } = useRepositoryNameSearch(repositories)
    18. const {
    19. filters,
    20. updateFilters,
    21. filteredRepositories
    22. } = useRepositoryFilters(repositoriesMatchingSearchQuery)
    23. return {
    24. // 因为我们并不关心未经过滤的仓库
    25. // 我们可以在 `repositories` 名称下暴露过滤后的结果
    26. repositories: filteredRepositories,
    27. getUserRepositories,
    28. searchQuery,
    29. filters,
    30. updateFilters
    31. }
    32. }
    33. }