有人可以解释以下之间的区别吗?
选项 API 版本
按预期在 DOM 中显示加载的数据
export default {
data() {
return {
config: {},
};
},
async mounted() {
this.config = await fetch('/path/to/file.json');
},
template: `<div>{{ config }}</div>`
}
组合 API 版本
显示配置的初始状态,但不显示加载的数据
import { onMounted, reactive } from 'vue';
export default {
setup() {
let config = reactive({});
onMounted(async () => {
config = await fetch('/path/to/file.json');
});
return {
config,
};
},
template: `<div>{{ config }}</div>`
}
我怀疑它reactive()被异步数据加载覆盖(并且我可以控制台记录onMounted函数中的新数据)但我在文档中看不到任何内容来指示如何大规模更新这样的反应对象(尤其是当它在选项 API 中工作)
编辑:最后的想法:
我已经开始使用reactive对象在应用程序周围提供/注入数据,然后使用toRefsJIT 方式将反应数据提供给我的视图。这似乎是两全其美。
例子:
import { onMounted, reactive, toRefs } from 'vue';
export default {
setup() {
const data = reactive({
config: {},
});
onMounted(async () => {
data.config = await fetch('/path/to/file.json');
});
return {
...toRefs(data),
};
},
template: `<div>{{ config }}</div>`
}