WordPress修改网站背景,搜中文找不到公司网站是怎么回事,2345网址大全最新版下载,中国铁建统一企业门户一、Composition API优势 
相对于vue2的option API Vue3的Composition API设计更有优势 
Composition(组合式)Api 功能分组 
Composition(组合式)Api 功能导入复用 
组合式Api 所解决的问题 
(1) 更好的代码组织结构 
(2) 相同的代码逻辑可以进行复用 
home.vue 3种方式递进升级…一、Composition API优势 
相对于vue2的option API Vue3的Composition API设计更有优势 
Composition(组合式)Api 功能分组 
Composition(组合式)Api 功能导入复用 
组合式Api 所解决的问题 
(1) 更好的代码组织结构 
(2) 相同的代码逻辑可以进行复用 
home.vue 3种方式递进升级 
templatediv classhomedivp{{ name }}/pbutton clickgetName姓名/button/divdivp{{ age }}/pbutton clickgetAge年龄/button/div/divHomeB/HomeB
/templatescript
//  is an alias to /src
import HelloWorld from /components/HelloWorld.vue;
import HomeB from ./HomeB.vue;
// import { ref } from vue;
import { useName, useAge } from ./user;export default {name: Home,setup() {// 1.Composition(组合式)Api// const people  {//   name: yusir,//   age: 18,// };// const name  ref();// const getName  ()  {//   name.value  people.name;// };// const age  ref();// const getAge  ()  {//   age.value  people.age;// };// return {//   name,//   getName,//   age,//   getAge,// };/* ------------------------ */// 2.Composition(组合式)Api 功能分组// const people  {//   name: yusir,//   age: 18,// };// return {//   ...useName(people), //展开运算符//   ...useAge(people),// };// function useName(people) {//   const name  ref();//   const getName  ()  {//     name.value  people.name;//   };//   return {//     name,//     getName,//   };// }// function useAge(people) {//   const age  ref();//   const getAge  ()  {//     age.value  people.age;//   };//   return {//     age,//     getAge,//   };// }/* ------------------------ */// 3.Composition(组合式)Api 功能导入复用// 组合式Api 所解决的问题// (1) 更好的代码组织结构// (2) 相同的代码逻辑可以进行复用const people  {name: yusir,age: 18,};return {...useName(people), //展开运算符...useAge(people),};},components: {HelloWorld,HomeB,},
};/scriptHomeB.vue 
templatediv classhomedivp{{ name }}/pbutton clickgetName姓名/button/divdivp{{ age }}/pbutton clickgetAge年龄/button/div/div
/template
script
import { useName, useAge } from ./user;export default {name: HomeB,setup() {const people  {name: yusirxiaer,age: 19,};return {...useName(people), //展开运算符...useAge(people),};},
};
/script
style langless scoped/styleuser.js 
import {ref
} from vue
export function useName(people) {const name  ref();const getName  ()  {name.value  people.name;};return {name,getName,};
}
export function useAge(people) {const age  ref();const getAge  ()  {age.value  people.age;};return {age,getAge,};
} 
二、setup 入口函数 
1.组件创建之前被调用  
setup 先于created执行this指向windows 
created()里打印的this 是proxy对象 指向组件实例 
setup函数参数  
Props Context (看HomeB子组件) 
Context JavaScript对象 
context.attrs: Attribute属性(非响应式对象)非props数据context.slots: 插槽非响应式对象context.emit: 触发事件的方法  this.$emit
2.this不会只指向当前组件实例 
3.返回值 
返回一个对象,对象的属性可以直接在模板中进行使用就像Vue2使用data和methods一样 
看代码例子 
Home.vue  
templateHomeB :titletitle desc父组件传递过来的普通属性 updateupdateh1普通的匿名插槽/h1h2{{ title }}/h2/HomeB
/templatescript
//  is an alias to /src
import HomeB from ./HomeB.vue;export default {name: Home,setup() {},data() {return {title: 父组件的title,};},created() {console.log(created()打印this);console.log(this);},methods: {update(newTitle) {this.title  newTitle;},},components: {HomeB,},
};/scriptHomeB.vue 
templatediv classhomeB/div
/template
script
export default {name: HomeB,props: {title: {type: String,required: true,},},setup(props, { attrs, slots, emit }) {console.log(props:, props);console.log(Attribute (非响应式的对象):, attrs);console.log(插槽:, slots.default());emit(update, 子组件更新数据的事件);},
};
/script
style langless scoped/style