toRefs和reactive
// 列表内容相关的逻辑 const useCurrentListEffect = (currentTab, shopId) => { const content = reactive({ list: [] }) const getContentData = async () => { //想在api url后面传 ?tab=参数,请求的时候分开两个参数来传 const result = await get(`/api/shop/${shopId}/products`, { tab: currentTab.value }) if(result?.errno === 0 && result?.data?.length) { content.list = result.data; } } watchEffect(() => { getContentData() }) const { list } = toRefs(content) return { list } }
老师,为什么本节课转为reactive
const content = reactive({ list: [] })
之后,还要实行转为toRefs
const { list } = toRefs(content)
为什么?这是做什么用处,没看懂
38
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕星星
2022-03-10 18:19:46
同学你好,解答如下:
1、reactive换为ref也可以,记得加上value属性,例如
用了ref后面也是用toRefs。
2、看下reactive和toRefs的原理
https://class.imooc.com/lesson/2155#mid=50986
toRefs会将数据中属性值变为ref形式响应数据,和reactive作用不一样。
3、toRefs接收的是响应式对象,不能用普通对象,否则会有警告,类似与下面的
自己再理解下。
好帮手慕星星
2022-03-10 10:35:10
同学你好,reactive包装list,会变为响应式数据。而这里给list重新赋值了,是普通的数组,当解构之后数据不再具有响应式
所以为了重新具有响应式,用toRefs()进行包装。
之前基础课程中有讲解到类似的,可以回顾下:
https://class.imooc.com/lesson/2155#mid=50983
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星