从Vue组合式函数中返回非响应式值是否合规可行?
从Vue组合式函数中返回非响应式值是否合规可行?
当然可行而且完全合规!你的写法一点问题都没有~
先看你给出的例子:你在useNavLink里返回的handleLinkClick是一个事件处理函数,本身确实不需要做成响应式的——它的逻辑是固定的,只是内部通过toValue解析了传入的响应式link参数,函数本身并不需要被Vue的响应式系统追踪。
再说说文档里提到的规范:
推荐的约定是组合式函数始终返回一个包含多个ref的普通非响应式对象。
这只是推荐的编码约定,不是必须遵守的硬性规则哦!这个约定的核心目的是统一组合式函数的返回格式,让使用者能形成一致的预期:拿到的返回对象里,属性如果是ref就需要(在脚本里)用.value访问,普通值就直接用。但这完全不代表你不能返回非响应式的其他值,比如工具函数、固定配置对象这类本身不需要响应式的内容。
换句话说,只要你返回的非响应式值本身不需要随着响应式状态变化而更新,就完全可以这么写。像你这里的点击处理函数,逻辑不会因为外部响应式状态改变而变化(只是内部用到的响应式变量会动态更新),返回非响应式的函数是非常合理的选择。
甚至在Vue的生态里,不少官方或社区的组合式函数也会返回这类非响应式的工具方法,所以完全不用担心合规性问题~
备注:内容来源于stack exchange,提问作者gottfried
相关产品推荐
相关产品推荐

