18910140161

自定创建的类,怎么在vue里将它变成响应式的?

顺晟科技

2021-06-19 08:10:48

205

我有个obj.js文件


顺晟科技:

};

import { reactive} from ‘vue’export default function class () {const obj = reactive([])

不用谢,二楼的回答正是官方推荐的方案。我看你提到类,所以才回答了用类实现的方案,不然我的回答也会与二楼类似。

请问为什么执行了obj.getData之后,视图里渲染的还是[]而不是[‘init’]?

import Obj from ‘@/utility/obj.js’

index.vueimport这个obj.js文件:

非常感谢,我用二楼的方案实现了,不过你这个也提供了一种ts实现的方案

export default {setup() {const { obj } = Obj()

所以我才建议你在构造函数中就进行 reactive(),这样在类中和外部操作的目标对象是一致的,都是经 reactive() 代理后的对象。

我上面的答案也是基于类的方案,每次调用构造函数 state 都是新的,正适合实现多实例。使用起来很简单:

创建派生类(举例):

return {obj}}

至于你的代码没有响应性,是因为类中的这句 this.data.push('init'); 操作的是 reactive() 前的对象。

const getDate = () => {obj.push('int)}

用state这个方案我想到过,但因为state属于全局的,不太方便实现多实例,所以就想自定义类的实例来做

你可以创建一个通用的基类:将所有属性存放在 this.state 中以方便统一管理,接着用 reactive 将 this.state 代理为可响应的状态;以此为蓝本。

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航