成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、网站制作、鄠邑网络推广、小程序开发、鄠邑网络营销、鄠邑企业策划、鄠邑品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供鄠邑建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
Array 详细: mixins 选项接收一个混入对象的数组。这些混入对象可以像正常的实例对象一样包含实例选项,这些选项将会被合并到最终的选项中,使用特定的选项合并逻辑。例如,如果 mixin 包含一个 created 钩子,而创建组件本身也有一个,那么两个函数都会被调用。 Mixin 钩子按照传入顺序依次调用,并在调用组件自身的钩子之前被调用。 示例: const mixin = { created: function() { console.log(1) } } Vue.createApp({ created() { console.log(2) }, mixins: [mixin] }) // => 1 // => 2 参考Mixins #extends 类型:Object | Function 详细: 允许声明扩展另一个组件 (可以是一个简单的选项对象或构造函数)。这主要是为了便于扩展单文件组件。 这和 mixins 类似。 示例: const CompA = { ... } // 在没有调用 `Vue.extend` 时候继承 CompA const CompB = { extends: CompA, ... }#provide / inject 类型: provide:Object | () => Object inject:Array | { [key: string]: string | Symbol | Object } 详细: 这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。如果你熟悉 React,这与 React 的 context 特性很相似。 provide 选项应该是一个对象或返回一个对象的函数。该对象包含可注入其子孙的 property。在该对象中你可以使用 ES2015 Symbols 作为 key,但是只在原生支持 Symbol 和 Reflect.ownKeys 的环境下可工作。 inject 选项应该是: 一个字符串数组,或 一个对象,对象的 key 是本地的绑定名,value 是: 在可用的注入内容中搜索用的 key (字符串或 Symbol),或 一个对象,该对象的: from property 是在可用的注入内容中搜索用的 key (字符串或 Symbol) default property 是降级情况下使用的 value 提示:提示:provide 和 inject 绑定并不是响应式的。这是刻意为之的。然而,如果你传入了一个响应式的对象,那么其对象的 property 仍是响应式的。 示例: // 父级组件提供 'foo' const Provider = { provide: { foo: 'bar' } // ... } // 子组件注入 'foo' const Child = { inject: ['foo'], created() { console.log(this.foo) // => "bar" } // ... } 利用 ES2015 Symbols、函数 provide 和对象 inject: const s = Symbol() const Provider = { provide() { return { [s]: 'foo' } } } const Child = { inject: { s } // ... } 使用一个注入的值作为一个 property 的默认值: const Child = { inject: ['foo'], props: { bar: { default() { return this.foo } } } } 使用一个注入的值作为数据入口: const Child = { inject: ['foo'], data() { return { bar: this.foo } } } 注入可以通过设置默认值使其变成可选项: const Child = { inject: { foo: { default: 'foo' } } } 如果它需要从一个不同名字的 property 注入,则使用 from 来表示其源 property: const Child = { inject: { foo: { from: 'bar', default: 'foo' } } } 与 prop 的默认值类似,你需要对非原始值使用一个工厂方法: const Child = { inject: { foo: { from: 'bar', default: () => [1, 2, 3] } } } 参考Provide / Inject #setup 类型:Function setup 函数是一个新的组件选项。它作为在组件内部使用组合式 API 的入口点。 调用时间 在创建组件实例时,在初始 prop 解析之后立即调用 setup。在生命周期方面,它是在 beforeCreate 钩子之前调用的。 模板使用 如果 setup 返回一个对象,则该对象的属性将合并到组件模板的渲染上下文中: {{ count }} {{ object.foo }} 请注意,从 setup 返回的 refs 在模板中访问时会自动展开,因此模板中不需要 .value。 渲染函数/JSX 的方法 setup 还可以返回一个渲染函数,该函数可以直接使用在同一作用域中声明的响应式状态: import { h, ref, reactive } from 'vue' export default { setup() { const count = ref(0) const object = reactive({ foo: 'bar' }) return () => h('div', [count.value, object.foo]) } } 参数 该函数将接收到的 prop 作为其第一个参数: export default { props: { name: String }, setup(props) { console.log(props.name) } } 请注意,此 props 对象是响应式的——即在传入新的 props 时会对其进行更新,并且可以通过使用 watchEffect 或 watch 进行观测和响应: export default { props: { name: String }, setup(props) { watchEffect(() => { console.log(`name is: ` + props.name) }) } } 但是,请不要解构 props 对象,因为它会失去响应式: export default { props: { name: String }, setup({ name }) { watchEffect(() => { console.log(`name is: ` + name) // 没有响应式 }) } } props 对象在开发过程中对于用户区代码是不可变的 (如果用户代码尝试对其进行更改,则会发出警告)。 第二个参数提供了一个上下文对象,该对象暴露了以前在 this 上暴露的 property 的选择列表: const MyComponent = { setup(props, context) { context.attrs context.slots context.emit } } attrs 和 slots 是内部组件实例上相应值的代理。这样可以确保它们即使在更新后也始终会显示最新值,以便我们可以对它们进行结构分解,而不必担心访问老的引用: const MyComponent = { setup(props, { attrs }) { // 稍后可能会调用的函数 function onClick() { console.log(attrs.foo) // 保证是最新引用 } } } 有很多理由将 props 作为单独的第一个参数而不是将其包含在上下文中: 组件使用 props 比其他 property 更常见,并且很多情况下组件仅使用 props。 将 props 作为单独的参数可以使单独键入更容易,而不会弄乱上下文中其他 property 的类型。这也使得在具有 TSX 支持的 setup、render 和普通功能组件之间保持一致的签名成为可能。 参考组合式 API 网页题目:创新互联VUE3教程:Vue3.0选项组合 路径分享:http://www.shufengxianlan.com/qtweb/news6/287106.html 网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等 广告 声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联 猜你还喜欢下面的内容 WebWork配置文件详解 编程常出现提示报错 win10高清晰音频管理器没了该怎么办win10高清晰音频管理器没了解决方案 简介C#虚拟方法 免费云服务器怎么样(免费云服务器体验哪里有?免费云服务器好用吗) 乌克兰vps是什么?乌克兰vps作用在哪里? VPS重装系统必备指南,30秒了解操作步骤(vps要重装系统) 创新互联Python教程:python怎么打印异常原因 什么是神经网络 搜索引擎优化知识 东莞虚拟主机是怎样的,了解东莞虚拟主机的优势与劣势 PolarDB如何配置可以监听从库binlog? Redis使用命令行进入新世界(redis进去命令行) 海外服务器多少钱一年?海外服务器租用费用一年多少 白沙网是什么,白沙网打造美丽华南板块的门户 云电脑服务器的概念是什么 细数十大你不得不用的MySQL开发工具 Oracle保持高精度精确度留下两位零 埃塞俄比亚服务器快吗,埃塞俄比亚速度不错吗? win10无法修复自动重启解决办法?(修复windows10命令) 服务器cdn查ip地址怎么查 未备案的域名无法解析,那应该怎么样备案?(未备案域名如何选择服务器) 为什么数据分析将会是全行业可持续发展的关键 开发者拒绝写技术博客的常见理由 千峰笔记掌握Redis现代数据库(千峰redis笔记) 行业网站建设 柴油发电机 食品包装袋 茶楼设计 花箱 自拌料搅拌车 生料搅拌车 混凝土搅拌罐 茶艺设计 软装设计 围栏护栏 集装箱 隧道混凝土搅拌车 小搅拌车 不锈钢雕塑 雨棚定制 户外休闲椅 东方电机技改 宣传册设计 成都网站改版公司 成都网站建设 LED显示屏厂家 成都微信二次开发公司 电子商务商城网站 雕琢时光 成都VI设计 移动服务器托管 小谭网创广告 等级保护测评 四川主机托管 成都网站建设 简阳服务器托管 微信小程序开发 德信企业管理 德阳服务器托管 网站建设开发 快照排名
mixins 选项接收一个混入对象的数组。这些混入对象可以像正常的实例对象一样包含实例选项,这些选项将会被合并到最终的选项中,使用特定的选项合并逻辑。例如,如果 mixin 包含一个 created 钩子,而创建组件本身也有一个,那么两个函数都会被调用。
mixins
created
Mixin 钩子按照传入顺序依次调用,并在调用组件自身的钩子之前被调用。
const mixin = { created: function() { console.log(1) } } Vue.createApp({ created() { console.log(2) }, mixins: [mixin] }) // => 1 // => 2
Object | Function
允许声明扩展另一个组件 (可以是一个简单的选项对象或构造函数)。这主要是为了便于扩展单文件组件。
这和 mixins 类似。
const CompA = { ... } // 在没有调用 `Vue.extend` 时候继承 CompA const CompB = { extends: CompA, ... }
Object | () => Object
Array | { [key: string]: string | Symbol | Object }
这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。如果你熟悉 React,这与 React 的 context 特性很相似。
context
provide 选项应该是一个对象或返回一个对象的函数。该对象包含可注入其子孙的 property。在该对象中你可以使用 ES2015 Symbols 作为 key,但是只在原生支持 Symbol 和 Reflect.ownKeys 的环境下可工作。
provide
Symbol
Reflect.ownKeys
inject 选项应该是:
inject
from
default
提示:提示:provide 和 inject 绑定并不是响应式的。这是刻意为之的。然而,如果你传入了一个响应式的对象,那么其对象的 property 仍是响应式的。
// 父级组件提供 'foo' const Provider = { provide: { foo: 'bar' } // ... } // 子组件注入 'foo' const Child = { inject: ['foo'], created() { console.log(this.foo) // => "bar" } // ... }
利用 ES2015 Symbols、函数 provide 和对象 inject:
const s = Symbol() const Provider = { provide() { return { [s]: 'foo' } } } const Child = { inject: { s } // ... }
使用一个注入的值作为一个 property 的默认值:
const Child = { inject: ['foo'], props: { bar: { default() { return this.foo } } } }
使用一个注入的值作为数据入口:
const Child = { inject: ['foo'], data() { return { bar: this.foo } } }
注入可以通过设置默认值使其变成可选项:
const Child = { inject: { foo: { default: 'foo' } } }
如果它需要从一个不同名字的 property 注入,则使用 from 来表示其源 property:
const Child = { inject: { foo: { from: 'bar', default: 'foo' } } }
与 prop 的默认值类似,你需要对非原始值使用一个工厂方法:
const Child = { inject: { foo: { from: 'bar', default: () => [1, 2, 3] } } }
Function
setup 函数是一个新的组件选项。它作为在组件内部使用组合式 API 的入口点。
setup
在创建组件实例时,在初始 prop 解析之后立即调用 setup。在生命周期方面,它是在 beforeCreate 钩子之前调用的。
如果 setup 返回一个对象,则该对象的属性将合并到组件模板的渲染上下文中:
{{ count }} {{ object.foo }}
请注意,从 setup 返回的 refs 在模板中访问时会自动展开,因此模板中不需要 .value。
.value
setup 还可以返回一个渲染函数,该函数可以直接使用在同一作用域中声明的响应式状态:
import { h, ref, reactive } from 'vue' export default { setup() { const count = ref(0) const object = reactive({ foo: 'bar' }) return () => h('div', [count.value, object.foo]) } }
该函数将接收到的 prop 作为其第一个参数:
export default { props: { name: String }, setup(props) { console.log(props.name) } }
请注意,此 props 对象是响应式的——即在传入新的 props 时会对其进行更新,并且可以通过使用 watchEffect 或 watch 进行观测和响应:
props
watchEffect
watch
export default { props: { name: String }, setup(props) { watchEffect(() => { console.log(`name is: ` + props.name) }) } }
但是,请不要解构 props 对象,因为它会失去响应式:
export default { props: { name: String }, setup({ name }) { watchEffect(() => { console.log(`name is: ` + name) // 没有响应式 }) } }
props 对象在开发过程中对于用户区代码是不可变的 (如果用户代码尝试对其进行更改,则会发出警告)。
第二个参数提供了一个上下文对象,该对象暴露了以前在 this 上暴露的 property 的选择列表:
this
const MyComponent = { setup(props, context) { context.attrs context.slots context.emit } }
attrs 和 slots 是内部组件实例上相应值的代理。这样可以确保它们即使在更新后也始终会显示最新值,以便我们可以对它们进行结构分解,而不必担心访问老的引用:
attrs
slots
const MyComponent = { setup(props, { attrs }) { // 稍后可能会调用的函数 function onClick() { console.log(attrs.foo) // 保证是最新引用 } } }
有很多理由将 props 作为单独的第一个参数而不是将其包含在上下文中:
render
网页题目:创新互联VUE3教程:Vue3.0选项组合 路径分享:http://www.shufengxianlan.com/qtweb/news6/287106.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
广告
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联
猜你还喜欢下面的内容
搜索引擎优化知识
行业网站建设