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

有特色的企业网站江宁交通建设集团网站

有特色的企业网站,江宁交通建设集团网站,推广网站代码,腾讯域名购买Vue 3 中的 Provide 和 Inject 机制是专为跨层级传递数据而设计的#xff0c;适用于祖先组件和后代组件之间的通信。与props 和 emits 不同#xff0c;Provide/Inject 可以跨越多个层级进行数据传递#xff0c;而不需要逐层传递。 1. Provide provide 是一个在祖先组件中提… Vue 3 中的 Provide 和 Inject 机制是专为跨层级传递数据而设计的适用于祖先组件和后代组件之间的通信。与props 和 emits 不同Provide/Inject 可以跨越多个层级进行数据传递而不需要逐层传递。 1. Provide provide 是一个在祖先组件中提供数据的方法它将数据传递给该组件的所有后代组件不需要直接的父子关系。provide 通常在组件的 setup 函数中使用。 2. Inject inject 是在后代组件中获取祖先组件提供的数据的方法。inject 也是在 setup 函数中使用后代组件通过 inject 来访问祖先组件的 provide 数据。 基本使用 步骤 1在祖先组件中使用 provide 提供数据 祖先组件通过 provide 将数据提供给后代组件。 // Parent.vue templateChild / /templatescript import { provide } from vue; import Child from ./Child.vue;export default {components: { Child },setup() {// 提供数据const message Hello from Parent!;provide(message, message); // message 是标识符message 是提供的值} }; /script在上面的例子中Parent 组件通过 provide 提供了一个名为 message 的数据值是字符串 Hello from Parent!。任何后代组件都可以通过 inject 来访问这个数据。 步骤 2在后代组件中使用 inject 获取数据 后代组件通过 inject 来访问祖先组件提供的数据。 // Child.vue templatediv{{ message }}/div /templatescript import { inject } from vue;export default {setup() {const message inject(message); // 使用 inject 获取数据return { message };} }; /script在上面的代码中Child 组件通过 inject 获取祖先组件 Parent 提供的 message 数据并将其渲染在模板中。 如何通过后代组件修改上级组件的值 在 Vue 中provide 传递的数据是响应式的但它只提供了只读数据。若要让后代组件修改上级组件的数据可以通过 provide 传递一个可变的对象或函数来实现。这也可以用来在后代组件中修改祖先组件的状态。 1. 传递响应式数据 你可以通过 reactive 或 ref 将响应式数据传递给后代组件这样后代组件就可以通过修改响应式数据来更改祖先组件的状态。 // Parent.vue templateChild /div{{ message.text }}/div !-- 显示修改后的数据 -- /templatescript import { reactive, provide } from vue; import Child from ./Child.vue;export default {components: { Child },setup() {// 提供响应式对象const message reactive({ text: Hello from Parent! });provide(message, message); // 提供响应式对象return { message };} }; /script在 Parent 组件中使用 reactive 创建了一个响应式对象 message并通过 provide 提供给后代组件。接下来后代组件就可以修改这个对象的内容。 2. 在后代组件中修改响应式数据 后代组件可以直接修改由 provide 提供的响应式对象的数据, 因为这违背了组件通信中单向数据流的规范所以不推荐直接在后代组件中直接修改来自上级数据的值。 // Child.vue templatebutton clickchangeMessageChange Message/button /templatescript import { inject } from vue;export default {setup() {const message inject(message); // 获取祖先组件提供的响应式对象// 修改 message 对象中的值const changeMessage () {message.text Updated message from Child!;};return { message, changeMessage };} }; /script在 Child 组件中通过 inject 获取祖先组件提供的响应式对象 message并提供一个方法 changeMessage 来修改 message.text。由于 message 是响应式的修改后会自动更新祖先组件中的视图。 通过函数传递数据 除了传递响应式对象外另一个常见的方法是传递修改数据的函数。这样可以控制后代组件如何修改上级组件的值。 1. 祖先组件传递函数 // Parent.vue templateChild /div{{ message }}/div !-- 显示修改后的数据 -- /templatescript import { ref, provide } from vue; import Child from ./Child.vue;export default {components: { Child },setup() {const message ref(Hello from Parent!);// 提供修改数据的函数const changeMessage (newMessage) {message.value newMessage;};provide(changeMessage, changeMessage); // 提供修改函数return { message };} }; /script在 Parent 组件中我们通过 provide 提供了一个函数 changeMessage它接收一个新的消息并修改 message 的值。 2. 后代组件调用函数修改数据 // Child.vue templatebutton clickchangeParentMessageChange Parent Message/button /templatescript import { inject } from vue;export default {setup() {const changeMessage inject(changeMessage); // 获取修改数据的函数// 调用函数修改父组件的值const changeParentMessage () {changeMessage(Message updated from Child!);};return { changeParentMessage };} }; /script在 Child 组件中通过 inject 获取 changeMessage 函数并在按钮点击时调用它来修改父组件的 message。 总结 provide在祖先组件中提供数据供后代组件使用。inject在后代组件中接收祖先组件提供的数据。响应式数据传递你可以传递响应式数据对象如 reactive 或 ref使得后代组件修改这些数据会反映到祖先组件。函数传递通过提供修改函数后代组件可以控制数据的修改从而影响祖先组件的状态。 Provide/Inject 机制非常适合跨越多个层级的组件通信并且能够避免通过多层级的 props 传递减少了组件间的耦合度。
http://www.hkea.cn/news/14268892/

相关文章:

  • 国际版网站可以在国内做推广吗网站移动页面怎么做的
  • 动易网站怎么进入后台建筑材料网站建设
  • 全国集团网站建设建e网室内设计网现代简约
  • 一个微信可以做两个网站支付宝吗医院网站方案
  • 郑州制作网站软件如何申请百度竞价排名
  • 深圳响应式网站价格自学it做网站
  • 建设部网站在哪里报名考试wordpress 数据库挂马
  • 济南网站建设方案书网站网页设计是什么
  • 如何找网站建设客户站长之家psd素材
  • PS网站设计重庆互联网
  • 公司网站建设费分录网站建设如何投放广告
  • h5页面制作网站官网企业站
  • 淘客网站建设要求百度免费推广有哪些方式
  • 深圳哪里可以做物流网站完爆网站开发经典实例
  • 百度网站如何优化排名太原建站网站模板
  • 手机网站备案洛阳企业网站建设
  • 哪里有营销型网站制作百度推广时间段在哪里设置
  • 商务网站建设毕业设计模板下载c 做网站session用法
  • 民宿网站开发数据流图wordpress安装后应该删掉那些文件
  • 做网站普洱一六八互联网站建设
  • 做交易网站什么开发语言seo网络推广公司
  • 开发app需要什么样的团队网站建设价格很 好乐云seo
  • 做原创短视频网站如何做镜像网站
  • 注册工作室流程及费用乐云seo网站建设公司
  • 云南住房与建设厅网站做网站先学美工
  • 贴心的广州网站建设互联网营销师证书含金量
  • 公司产品展厅设计阳江优化网站排名
  • 线上营销模式优化营商环境存在问题及整改措施
  • 濮阳建站推广哪家好wordpress翠珠林
  • 网站建设后台wordpress编辑页面模板