文章目录
三个创建响应式数据的函数reactive、toRefs、ref
-
reactive:把对象转换成一个响应式对象,也就是一个Proxy对象。
-
toRefs:它可以把一个代理对象中的所有属性也都转换成响应式的对象,
toRefs()
在处理这个对象的属性的时候,类似于ref
。 -
ref: 把基本类型的数据转换成响应式对象。
先从一个问题看起, 响应式对象解构过后就不再是响应式的对象了,因为我们在创建响应式对象的时候使用reactive
函数将数据封装成了Proxy
对象
例如,以下的代码是不可以正常工作的:
【案例代码在线演示地址】
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document 01 for Vue 3.0 Composition API</title>
</head>
<body>
<div id="app">
x: {
{
x }} <br />
y: {
{
y }}
</div>
<script type="module">
// 当前重构抽离的函数可以放到一个模块中,将来在任何组件中都可以使用,你可以尝试使用相同的方式实现其他的逻辑
function useMousePosition() {
const position = reactive({
x: 0,
y: 0,
});
const update = (e) => {
position.x = e.pageX;
position.y = e.pageY;
};
onMounted(() => {
window.addEventListener('mousemove', update);