Han*_*s A 5 javascript vue.js vue-component vue-reactivity vuejs3
如何创建对象属性reactive?
当我运行下面的代码时,导入的内容visible不会更改为true.
导入对象的组件:
<template>
<div class="context">
<span v-if="visible"> test </span>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
<script>
import { ContextManager } from "./utils.js";
import { ref } from "vue";
export default {
name: "context",
setup() {
const visible = ref(ContextManager.visible);
return { visible };
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
向对象添加数据的其他组件:
const openContext = (e) => {
e.preventDefault();
ContextManager.add({
el: e.target,
items: contextItems
},e );
};
Run Code Online (Sandbox Code Playgroud)
上下文管理器对象:
import { reactive } from "vue";
export const ContextManager = reactive({
context: null,
visible: false,
add(context, e) {
this.visible = true;
}
});
Run Code Online (Sandbox Code Playgroud)
对象的属性不是引用,因此当您提取visible属性时,与原始对象不再有任何连接,因为它只是一个普通的布尔值。
toRef为此目的提供了 api 方法来维护此连接:
可用于为源反应对象上的属性创建引用。然后可以传递 ref,保留与其源属性的反应连接。
导入该toRef方法并使用它,如下所示:
import { toRef } from 'vue'
Run Code Online (Sandbox Code Playgroud)
const visible = toRef(ContextManager, 'visible');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5918 次 |
| 最近记录: |