依赖注入
Vue3.0依赖注入方式 provide和inject的用法类似于2.x的选项 provide/inject。两者都只能在当前激活实例setup()中调用。
inject接受可选的默认值(比如 light)作为第二个参数。如果未提供默认值且在提供上下文中找不到该属性,则inject返回undefined。
响应式注入
为了维持 provide和inject之间值的响应式,可使用ref:
图中后代 ${theme.value}随着 祖先 themeRef 的改变而改变。
另外,如果注入的是响应式对象,也可以实现响应式追踪。
模板refs
使用Composition API时,响应式refs和模板refs的概念是一致的。为了获取模板元素或组件实例的引用,我们可以像往常一样声明一个 ref 并从setup()返回:
将root暴露给渲染上下文并通过 ref="root"将其绑定到div上。在Virtual DOM修补算法中,在Virtual DOM算法里,如果一个VNode节点的ref键与渲染上下文中的ref对应,那么VNode节点对应的元素或组件实例将被赋值给当前ref的value。只能在Virtual DOM挂载mount或patch阶段才有此表现行为,因此只有初始化渲染后才能给模板refs赋值。
refs用作模板时的表现与其他refs一致:它们是响应式的,可以传递给composition函数(或从composition函数返回)。
渲染函数 / JSX的用法
v-for内用法:
createComponent 函数
此函数仅用于类型推断。使TypeScript知道一个对象应该是一个组件定义,这样才能推断传递给setup()的props的类型。
完结。