美文网首页
Composables 组合函数

Composables 组合函数

作者: alue | 来源:发表于2022-11-08 15:47 被阅读0次

下面案例有助于理解 vue 中的Composables 组合函数
我们在普通 js 文件(不是 vue 组件)中,定义如下函数。

// utils.js
import { useRouter } from "vue-router";

export const goto = (url) => {  
  const router = useRouter();  
  router.push(url);  
};

然后在 组件中调用它,会发现运行报错:Cannot read properties of undefined (reading 'push') .

// Example.vue
<script setup>
import {  goto } from "src/utils";
</script>

原因分析

useRouter 是Composables 组合函数。而 vue 对组合函数具有限制.也就是说,useRouter() 必须在 setup 中调用。这样vue才能够获取组件实例的上下文。

解决办法

利用闭包, 让下面这句话在setup中调用即可。

const router = useRouter();

实现手段

// utils.js
import { useRouter } from "vue-router";
export const goto = () => {  
  const router = useRouter();  
  const go = (url) => {  
    router.push(url);  
  };  
  return { go };  
};

// Example.vue
<script setup>
import {  goto } from "src/utils";
const { go } = goto();
</script>

这样在执行const { go } = goto() 的时候,useRouter()被调用。这正处于setup环境中,因此组合函数能够正确执行。

相关文章

  • Composables 组合函数

    下面案例有助于理解 vue 中的Composables 组合函数我们在普通 js 文件(不是 vue 组件)中,定...

  • 命令式与声明式

    之前对 组合函数(Composables )的理解还是不到位, 最近看了Soybean Admin的开源代码, 对...

  • Vue 3 响应性机制 之 watch 应用

    直接简单粗暴地上实例,这是一个用来获取分页列表数据的组合函数: ?src/composables/useList....

  • Vue3中的Composables组合式函数,Vue3实现min

    Vue3中的Composables是什么Vue3中的Composables 简单理解其实就是类React Hook...

  • 函数式编程(四)——函数组合

    目录 函数组合背景知识管道Lodash中的组合函数 —— flow()/flowRight()函数组合原理模拟函数...

  • 关于webpack loader的加载顺序

    函数组合 先介绍一个概念,函数组合:函数组合是函数式编程中非常重要的思想,它的实现的思路也没有特别复杂。 函数组合...

  • compose

    函数组合 先介绍一个概念,函数组合:函数组合是函数式编程中非常重要的思想,它的实现的思路也没有特别复杂。 函数组合...

  • FP

    偏函数 颠倒实参顺序 组合函数 组合函数 reduce实现 pipe(...) VS compose(...)p...

  • ggplot2一页多图(组合图)

    组合图方法一:cowplot包plot_grid()函数 组合图方法二:ggpubr包ggarrange()函数

  • Javascript如何实现继承

    构造函数继承 原型构造函数组合继承

网友评论

      本文标题:Composables 组合函数

      本文链接:https://www.haomeiwen.com/subject/briwtdtx.html