当前位置: 首页 > news >正文

做网站注册页面大一html网页制作作业

做网站注册页面,大一html网页制作作业,品牌推广外包,东莞做网站公司有哪些1. 使用场景 我们在子组件中通常需要调用父组件的数据,此时需要使用 vue3 的 props 进行父子组件通信传值。 2. 问题描述 那么此时问题来了,在使用 props 进行父子组件通信时,因为数据传递是异步的,导致子组件无法成功获取数据…

1. 使用场景

我们在子组件中通常需要调用父组件的数据,此时需要使用 vue3 的 props 进行父子组件通信传值。

2. 问题描述

那么此时问题来了,在使用 props 进行父子组件通信时,因为数据传递是异步的,导致子组件无法成功获取数据,若此时父组件中数据发生变化,那子组件获取的值是改变之前的数据。

举个 🌰:

父组件中有一个 tab 进行切换导航,下面的输入框区域为子组件,“个人” clueScope 为 1,“团队” clueScope 为 2,将父组件中的 clueScope 通过 props 传递给子组件,此时会出现下面的结果:

最开始控制台输入一行“个人”的 clueScope,接下来我们点击“团队”输出 1,点击“个人”输出 2,原因是我们在子组件获取的是父组件传递的数据更新之前的值,意识到这个很重要。

这么说有点抽象,简单看一下局部的代码:

父组件

const queryForm = ref({clueScope: 1, // 默认为 个人 -- 1}
)
const ChildRef = ref();
const renderTab = () => (<div><ElTabs v-model={queryForm.value.clueScope} onTabChange={handleChangeTab}><ElTabPane label='个人' name='1' /><ElTabPane label='团队' name='2' /></ElTabs></div>
);
// 切换 tab
const handleChangeTab = () => {ChildRef.value.resetForm();
;
return () => (<div class=''>{renderTab()}<ChildCompref={ChildRef}clueScopeType={queryForm.value.clueScope}/></div>
);

子组件使用 expose 抛出方法,让父组件进行调用。

props: {clueScopeType: {type: Number,default: ClueListTabEnum.个人私池,},
},
const resetForm = () => {console.log(props.clueScopeType, 'type');
}
expose({resetForm,
});

此时就会出现上述问题。

3. 原因

使用 props 进行父子组件通信时,子组件异步获取父组件传递的数据,也就是说,子组件还未获取父组件改变之后的数据,就已经开始执行函数,输出的就是父组件改变之前的值,因此无法成功渲染数据拿到真实值。

4. 解决方法

方法一:watch

最常见的方法就是使用 watch 进行监听,当数据发生改变之后,在执行某项操作。

// 子组件添加 watch
watch(() => props.clueScopeType, (newValue) => {console.log(props.clueScopeType, 'type');
})

注意 ⚠️:

一般在实际项目开发中,不建议使用 watch,因为后续可能会有其他的功能也涉及到 tab 的变化做一些操作,这样可能会出现逻辑上的耦合,如果我们把多个相互不耦合的函数,都放在一个 watch 里面,那监听的变量越来越多,这个 watch 函数也会越来越大,越来越不好控制,违背了程序的初衷。

方法二:传递参数

沿用刚刚的 resetForm 方法进行修改。

我们在父组件中传递具体的参数值,子组件中可以顺利获取,原因是,在调用函数的时候,父组件传递的值一定是改变后的值,那么子组件获取的也一定是真实的值。

// 父组件
// 切换 tab
const handleChangeTab = () => {RouteSearchRef.value.resetForm(queryForm.value.clueScope);
};
// 子组件
const resetForm = (type) => {console.log(type, 'type');
}
expose({resetForm,
})

以上两个方法都可以成功解决,大家可以根据实际问题具体选择哪一种。

http://www.khdw.cn/news/67054.html

相关文章:

  • 郑州网站建设培训学校债务优化是什么意思
  • 开发一款彩票app需要多少钱seo博客写作
  • 360安全网站怎么做号码认证搜索引擎营销是什么意思
  • 酒店网站建设流程百度搜索推广是什么
  • wordpress移服务器改域名seo诊断工具
  • 有哪些学做衣服的网站软文广告经典案例800字
  • 正规品牌网站设计地址推广优化关键词
  • 如何拷贝网站代码电商网络营销
  • 滁州市南谯区建设局网站百度关键词如何优化
  • IT男为女朋友做的求婚网站品牌网站建设方案
  • 国外游戏网站设计投放广告的网站
  • 杭州知名网站建设seo优质友链购买
  • 网站建设属于哪种公司seo网站推广是什么
  • 学做网站教学百度网盘网站seo关键词排名查询
  • 做定制网站多少钱seo网络推广排名
  • 网站 单页网络项目平台
  • 建网站要花钱吗搜索引擎营销的简称
  • 微信开发者平台教程seo快速优化方法
  • 临沂在线上网站建设广告推广平台网站有哪些
  • 网站描本链接怎么做seo网站内容优化有哪些
  • 做网站一年赚80亿网站建设需要多少钱?
  • 专业3合1网站建设价格百度一下百度搜索百度
  • 网站怎么做谷歌权重微信小程序排名关键词优化
  • 找别人做网站要注意什么软件seo是怎么优化的
  • 如何免费建立自己网站企业文化案例
  • 凡客诚品购物流程设计网站内链优化
  • 网站开发课程改革佛山网站建设排名
  • wordpress 4.1seo搜狗
  • 网站设计项目推广软文模板
  • apache添加多个网站成都网站快速排名