vue合成api如何解决命名冲突?

2023-12-27

据说composition api解决了mixin带来的命名冲突。

这是我在网上找到的关于composition API的内容。

export default {
  setup () {
    const { someVar1, someMethod1 } = useCompFunction1();
    const { someVar2, someMethod2 } = useCompFunction2();
    return {
      someVar1,
      someMethod1,
      someVar2,
      someMethod2
    }
  }
}

我猜,useCompFunction1() and useCompFunction2就像 mixins 一样。在示例中,一切都很好。但如果useCompFunction1() and useCompFunction2()使用同名的变量,上面的代码仍然会遇到问题,因为我们无法使用这两个变量。所以,命名冲突当然仍然存在。那为什么说命名冲突可以用 Composition API 解决呢?

UPDATE:

我提供的示例,这是我发现应该如何编写可重用代码的代码。

import { ref, computed } from "vue";


export default {
  setup() {
    const count = ref(0);
    const double = computed(() => count.value * 2)
    function increment() {
      count.value++;
    }
    return {
      count,
      double,
      increment
    }
  }
}

正如你所看到的,它返回变量count, double, increment。它的作用是调用者应该知道它的名称才能使用它。因此,仍然是组合决定了变量的命名。任何想法 ?


之间的主要区别mixin复合函数是mixin决定它提供的变量名称,但具有组合功能,YOU决定变量的名称你分配从结果来看,组合函数提供了......

Example:

const { someVar1, someMethod1 } = useCompFunction1();
const { someVar1, someMethod1 } = useCompFunction2();

....大多数 IDE 都会告诉您这是不正确的,因为您声明的变量已经存在...

重点是,里面的变量名是什么并不重要useCompFunction1 or useCompFunction2因为这些是局部变量。但要使用它们You需要声明自己的变量并从组合函数结果中分配它...所以您决定变量名称,而不是您正在使用的“mixin”...

Update

所以,仍然是组合决定了变量的命名

不,是你!

如果您按原样使用结果:

const comp1 = useCompFunction1();

...您将结果与您选择的名称一起使用:

console.log(comp1.count)

但是,如果您选择使用解构 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment,您仍然可以重命名获得的变量:

const { count: count1, double: double1, increment: increment1 } = useCompFunction1();

...现在您可以使用变量count1, double1 and increment1如你认为合适...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue合成api如何解决命名冲突? 的相关文章

随机推荐

  • 用 C 读取文本文件,将行分成多个变量

    我目前正在开发一个模拟各种CPU调度方法的程序 目前我有一个要求输入的程序 printf Enter type of CPU scheduling algorithm SJF RR PR noPREMP PR withPREMP scanf
  • 模拟 side_effect 迭代器用完后可以重置吗?

    mock reset mock 不会重置副作用迭代器 有没有办法在不再次创建模拟的情况下做到这一点 gt gt gt from mock import MagicMock gt gt gt mock MagicMock side effec
  • 如何从 numpy ndarray 中删除特定值

    我有一个 numpy ndarray 如下所示 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225 224 228 163 164 174 205 212 229 116 130 153 81 101
  • 使用 Prolog 解决脑筋急转弯(Master Mind)

    一位工作中的朋友在我们的 Whatsapp 群组中分享了这一点 这把锁有一个 3 位数的代码 仅使用这些提示你能猜出来吗 我们使用类似于真值表的东西解决了这个问题 不过我很好奇 在 Prolog 中如何解决这个问题 直接编码check谓词
  • 如何将整个向量复制到队列中?

    我希望将向量的全部内容复制到 C 中的队列中 这是一个内置函数还是有必要循环每个元素 如果创建一个新队列 可以使用构造函数 std vector
  • AWS Aurora MySQL 无服务器:如何从 MySQL Workbench 进行连接

    我试图在我的项目中使用 AWS Aurora Serverless for MySQL 但我无法连接到它 尽管我有端点 用户名 密码 我做了什么 从 AWS 控制台管理中 我选择 RDS gt 实例 gt Aurora gt 无服务器 保留
  • C# 中使用 XmlReader 读取 Xml

    我试图尽可能快地读取以下 Xml 文档 并让其他类管理每个子块的读取
  • 就地修改字典值

    我想将函数应用于 a 的值dict位于dict like map在函数式编程设置中 假设我有这个dict d a 2 b 3 我想应用该功能divide by 2 0字典的所有值 导致 d a 1 b 1 5 最简单的方法是什么 I use
  • 自动引用 Microsoft.Data.Tools.Schema.Sql.UnitTesting

    以下引用将自动添加到我的 控制台应用程序 项目中 Microsoft Data Tools Schema Sql UnitTesting dll Microsoft Data Tools Components dll 我的老板无法在他的机器
  • 使用 VBA 编辑器创建 DLL

    我的职位是全职编写 Visual Basic 宏来支持公司的多个部门 我做得很好 学到了很多东西 也很喜欢我的职位 我们正在制定未来的计划 虽然我非常擅长搜索这些项目所需的信息 堆栈溢出是一个很好的资源 但我已经干了一些我已经做过的事情一直
  • 为什么注销后点击页面后退按钮会显示上一页内容?

    我正在开发一个 Struts 2 项目 当用户点击一个logout按钮logout使用操作清除会话session clear 但是当用户点击back注销后浏览器中的按钮 仍显示上一页内容 我想将用户重定向到登录页面 如果back注销后在浏览
  • Richfaces 列过滤器:如何在介绍键上触发事件

    我有一个rich extendedDataTable我正在使用列过滤 我希望一旦用户输入 intro 键就触发过滤器 但在javascript中没有这样的事件 我想这样做是因为如果我使用诸如onkeyup我收到了太多的请求 因此遇到了问题
  • ubuntu 11.10 中终端和浏览器中显示不同的 php 版本

    当我在终端显示中使用 php v 时 PHP 5 3 6 13ubuntu3 9 与 Suhosin Patch cli 构建时间 2012 年 9 月 12 日 19 02 11 版权所有 c 1997 2011 PHP 集团 Zend
  • 使用 mysql_free_result($result) 是一个好习惯吗?

    我知道所有关联的结果内存都会在脚本执行结束时自动释放 但是 如果我使用了很多如下类似的操作 您会建议使用它吗 sql select from products result mysql query sql if result mysql n
  • 为什么要在 python 中使用类方法? [复制]

    这个问题在这里已经有答案了 我正在 python 的某个类中编写一个函数 人们建议我向这个函数添加一个 classmethod装饰师 My code import random class Randomize RANDOM CHOICE a
  • 如何将表单数据从角度传递到nodejs

    我是 Angular5 的新手 我需要将用户详细信息从 Angular 传递到 Nodejs 应用程序组件 ts import Component from angular core import FormBuilder FormGroup
  • 删除 MultiIndex 中带有重复项的 NaN 行

    使用重现我的确切问题的 DataFrame 进行更新 我有一个问题NaN出现在我的索引中会导致非唯一的行 因为NaN NaN 我需要将所有行删除到NaN出现在索引中 我之前的问题有一个示例 DataFrame 其中包含一个NaN行 但是原始
  • Backbone.js 与 Eco 模板:如何在模板中包含模板?

    是否可以在模板中包含模板 也许类似于 ERB 处理部分的方式 与其尝试以 ERB 之类的方式渲染嵌套模型 不如让 Backbone js 来处理这个问题 注意 我使用的是 Coffeescript 语法 项目 IndexView templ
  • 如何将 Variant 数组转换为 Range?

    我有一个 2D 数组类型Variant 填充数组的大小和值是根据工作表中的数据生成的 该数组需要进一步处理 主要是几个值的插值 我正在用这个插值函数 http www ozgrid com forum showthread php t 64
  • vue合成api如何解决命名冲突?

    据说composition api解决了mixin带来的命名冲突 这是我在网上找到的关于composition API的内容 export default setup const someVar1 someMethod1 useCompFu