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

图书网站开发介绍网站设计 现在流行的导航方式

图书网站开发介绍,网站设计 现在流行的导航方式,苏州市市政建设集团公司网站,专业做淘宝网站绍兴前置说明 在 Vue 3 中,provide 和 inject 是一对用于跨组件树传递数据的 API。它们允许你在祖先组件中使用 provide 提供数据或服务,然后在后代组件中使用 inject 来获取这些数据或服务。这种方式特别适用于跨多个层级的组件传递数据,而不需要…

前置说明

  在 Vue 3 中,provideinject 是一对用于跨组件树传递数据的 API。它们允许你在祖先组件中使用 provide 提供数据或服务,然后在后代组件中使用 inject 来获取这些数据或服务。这种方式特别适用于跨多个层级的组件传递数据,而不需要逐层传递 Props。

模拟场景:三个界面,FatherPage、MiddlePage、SonPage,其中他们也是层级引用的,FatherPage中引用MiddlePage,然而MiddlePage中包含SonPage界面;

此时,我们想将FatherPage中的数据传递给SonPage中,我们可以使用provide和inject直接进行传递:

示例:


FatherPage.vue:
<script setup name="FatherPage" lang="ts">
import MiddlePage from './MiddlePage.vue';const msg = '父亲界面'
</script><template>
<div><h1>{{msg}}</h1><MiddlePage/>
</div>
</template>
MiddlePage.vue
<script setup name="MiddlePage" lang="ts">
import sonPage from '@/components/ProvideIn/son.vue'
</script><template>
<div class="middle"><h2>中间界面</h2><sonPage/>
</div>
</template>
 sonPage.vue
<script setup name="sonPage" lang="ts">
const dataSmg = '儿子界面'</script><template>
<div class="son"><h3>{{dataSmg}}</h3>
</div></template>

 快速上手:

FatherPage中传递的数据:

<script>
import { provide,ref } from 'vue'//顶层组件提供数据
provide('data-key',' This is a father data!!!')
</script>

SonPage中接受的数据:

<script>
import { inject,provide } from 'vue';const dataFather = inject('data-key')
</script>

完整案例:


 FatherPage

<script setup name="FatherPage" lang="ts">
import { provide,inject,ref } from 'vue'import MiddlePage from './MiddlePage.vue';const msg = '父亲界面'//1.顶层组件提供数据
provide('data-key',' This is a father data!!!')//2.向子组件传递响应式数据
const countMsg = ref(10)
provide('count-key',countMsg)//3.向子组件传递方法
const changeCount =  function(){countMsg.value++
}provide('change-key',changeCount)//4.尝试接受子组件的数据
const dataSon = inject('son-key')// //尝试自己定义数据,自己接受不可行
// provide('data-sonKey',' This is a son two data!!!')// const dataSon = inject('data-sonKey')</script><template>
<div><h1>{{msg}}</h1><hr>数据:{{ dataSon }}<button @click="changeCount">点击改变count</button><MiddlePage/>
</div></template><style scoped></style>

MiddlePage

<script setup name="MiddlePage" lang="ts">
import sonPage from '@/components/ProvideIn/son.vue'
</script><template>
<div class="middle"><h2>中间界面</h2><sonPage/>
</div></template><style scoped>
.middle{background-color: aquamarine;
}
</style>

SonPage

<script setup name="sonPage" lang="ts">
import { inject,provide } from 'vue';const dataFather = inject('data-key')
const dataSmg = '儿子界面'const dataCount = inject('count-key')const changeMethod = inject('change-key')//父组件不能接受子组件的数据
// provide('son-key',dataSmg)</script><template>
<div class="son"><h3>{{dataSmg}}</h3><hr>父组件跳跃中间层传递过来的数据:{{ dataFather }}<h3>响应式数据:{{ dataCount }}</h3><button @click="changeMethod">改变父组件的数据</button>
</div></template><style scoped>
.son{background-color: rgb(145, 145, 63);
}
</style>

效果

 

注意事项:

  • provide 和 inject 是全局的,这意味着在整个应用中都可以访问到提供的数据。因此要小心命名冲突。
  • inject 可以在任何组件中使用,但通常在需要跨多层组件共享数据时最为有用。
  • 如果一个组件同时使用了 provide 和 inject,确保它们的键名不会冲突,否则可能会导致意外的行为。

总结:

  1. provide和inject的作用是什么?跨层组件通信
  2. 如何在传递的过程中保持数据响应式?第二个参数传递ref对象
  3. 底层组件想要通知顶层组件做修改,如何做?传递方法,底层组件调用方法
  4. 一颗组件树中只有一个顶层或底层组件吗?相对概念,存在多个顶层和顶层的关系
http://www.bjxfkj.com.cn/article/110170.html

相关文章:

  • 公司网站建设哪家比较好wordpress在线教育系统
  • 母婴网站源码八爪鱼网络网站建设
  • 网站开发合同范本织梦素材网站模板免费下载
  • ae成品免费下载网站三分钟短视频策划方案
  • 怎么在网站挂黑链接上海高端网站开发站霸网络
  • iis网站搭建成都网站建设 好多科技
  • 2345网址导航官方网站网站的主要功能
  • o元做网站做业务员找数据的网站
  • 做网站需要用什么语言3d建模下载
  • 做网站好的网站建设公司哪家好wordpress 字符集
  • 传奇手游发布网站成都网站制作南昌
  • 珠海在线网站建设wordpress插件 数据列表
  • 市场调研问卷2018网站如何做seo
  • 网站忧化 推广同时做大型网站快速排名
  • 网站建设公司业务员莱芜住房和城乡建设厅网站
  • 新余做网站的省建设厅执业资格注册中心网站
  • 公共服务平台网站建设方案wordpress导入xml失败
  • 上海电商网站设计营销型网站的三元素
  • 对对联的网站网站开发器
  • 建立主题网站的顺序一般是百城建设提质工程网站
  • 网站续费文档wordpress中联系表
  • 网站怎么开发代码柳州企业网站开发平台
  • wordpress 3.9.1下载seo推广外包报价表
  • 信息无障碍 网站建设深圳分销网站设计电话
  • 吴中区网站设计公司做最好的网站
  • 深圳做网站专业的公司成都微商城开发公司
  • 长沙做网站zwnet瑞安做网站
  • 济南资海网站建设公司拼多多店铺出售交易平台
  • 网站宣传推广的目的一个公司多个网站做优化
  • 舟山市建设信息港网站打不开wordpress写文章本地上传图片