vue3使用2

1.context 可以拿到属性 插槽 发射的自定义事件

 <div id="app">
			<lk-box style="width: 200px; height: 200px;
			 background-color: red;"
			 >
			 </lk-box>
			
			
			
			
     </div>


	const app=Vue.createApp({
			
			
		});
   app.component('lk-box',{
			setup(props,context){
				const {attrs,slots,emit}=context;
				console.log(attrs.style);
				
				
			},
			template:
			//父组件给子组件传递数据 no-props
			  '<div :style="$attrs.style">我是子组件</div>' 
			
		});
	   app.mount("#app");

2.context的emit父组件向子组件传递数据

<div id="app">
			<lk-box style="width: 200px; height: 200px;
			 background-color: red;"
			 ></lk-box>
			
			
			
			
     </div>


	const app=Vue.createApp({
			
			
		});
       app.component('lk-box',{
			setup(props,context){
				const {attrs,slots,emit}=context;
		//拿到插槽里面的html代码(是个数组的形式,因为可能有多个元素)
				console.log(slots.default()[0]);
				
				
			},
			template:
			//父组件给子组件传递数据 no-props
			  '<div :style="$attrs.style">我是子组件</div>' 
			
		});
	   app.mount("#app");

3.context的computed属性

setup(props,context){
				const{ref,computed}=Vue;
				let num1=ref(10);
				let num2=computed(()=>{
					return num1.value*10;
				});
				return{
					num1,
					num2
				}
				
				
			}
			
		});

4.context的computed函数的属性 set//设置值时触发 和 get//浏览器得到值时触发

<script>  
		const app=Vue.createApp({
			setup(props,context){
				const{ref,computed}=Vue;
				let num1=ref(10);
				let num2=computed({
					get:()=>{//浏览器得到值时触发
						return num1.value*10;
					},
					  set:(res)=>{//设置值时触发
					         console.log(res)
					         num1.value=res / 10
					       }
				});
				let add=()=>{
					num2.value+=10;
				}
				return{
					num1,
					num2,
					add//可以返回函数
				}
				
				
			}
			
		});

	
	   app.mount("#app");
  1. 用reactive的计算属性的用法
    num1.value 要写成 num1.count 包括显示 {{num1}} ---> {{num1.count}}

  2. 监听器

const app=Vue.createApp({
			setup(props,context){
				const {ref,watch}=Vue;
				let myBrand=ref('xxx');
				let site=ref('xxxxsss');
				//    同时监听一个
				watch(myBrand,(currentB,preB)=>{
		console.log("现在的值"+currentS+"之前的值"+preS);
				},{});
				//    同时监听两个
		watch([myBrand,site],([currentB,preB],[currentS,preS])=>{
		  console.log("现在的值"+currentS+"之前的值"+preS);
				},{});
				
				return{
					myBrand
				}
				
				
			}
			
		});

在html中使用:

   <div id="app"> 
                <input v-model="myBlind"/>
	{{myBlind}}//可以使用这样取值
    </div>

7.监听器监听一个属性(不大明白)

   const app=Vue.createApp({
			setup(props,context){
				const {ref,watch,reactive,toRefs}=Vue;
		
			let endObj=reactive({brand:'1',site:'111'});
				//    同时监听一个(不大明白为什么是一个函数)
			watch(()=>endObj.brand,(current,pre)=>{
					console.log('xxxxx');
				},{});
		let {brand,site}= toRefs(endObj);//解构是解构对象
				
			
				return{
					brand,
					site
				}
				
				
			}
			
		});
	
	   app.mount("#app");

1.watch 与
watchEffect副作用(没有惰性第一次不会生效 更加抽象(非具体,功能少) 不能访问之前的值)

 const app=Vue.createApp({
			setup(props,context){
				const {ref,watch,reactive,toRefs}=Vue;
		
			let endObj=reactive({brand:'1',site:'111'});
				//    同时监听一个
			watch(()=>endObj.brand,(current,pre)=>{
					console.log('xxxxx');
				},{
  				immedia:true,//是否惰性(是否立刻)
                deep:ture//是否深度揭示(就是内部有变化也监听)
                                         });
		let {brand,site}= toRefs(endObj);//解构对象
				
			
				return{
					brand,
					site
				}
				
				
			}
			
		});
	
	   app.mount("#app");

2.watchEffect 可以直接深度监听 不能监听之前的值 全局监听(只要数据有变化)

   
  watchEffect(()=>{
            console.log("开始监听");		
  })

3.provide 数据发射出去,谁要用谁去订阅(直接可以子组件拿到父组件数据 但是不能修改)
一样要引入(但是会修改父组件的数据)

   父组件:   provide("myvalue",value);
          provide("myvalue",readonly(value));//发布
   子组件:  let value=inject('myvalue');//订阅

4.setup中的计算属性

  const {ref,computed}=Vue;
   let num1=ref(10);
   let num2=computed(()=>{
        return num1*10;
   });

5.vue3的setup的生命周期(放在setup里面)加个 on

const {onBeforeMount}=Vue;
 onBeforeMount(()=>{
     console.log("xxxx");

});

6.获取真实dom元素(特殊情况用) 直接定义常量 给某个html传值(与v-model差不多)
ref 一一对应可以获得dom元素

   const brand=ref(null);
    onMounted(()=>{
           console.log(brand.value);

    });
    return{
        brand
    }

7.Vue-cli 脚手架
Node.js 安装 npm install -g @vue/cli
更新 npm update -g @vue/cli
查看版本 vue -v
安装yarn npm install -g yarn
文件夹右键打开终端 yarn create @vitejs/app my-name (工程的名称小心不能驼峰)
安装 yarn
启动并下载对应依赖 yarn dev

8.(面试)为什么要用vue-cli脚手架:快速搭建项目和工具

  • public放一些静态的资源

  • src:gitignore进行项目版本控制 有个app.vue

  • 可以建个pages文件夹 放.vue最后会变成 index.html

  • main.js 把数据输出到index.html

  • .Vue 是带有 template script style 标签,就是组件化的思想

  • 单页面应用:最终会在1个页面显示(index.html) 不用创建很多页面了,一个页面就可以实现跳转等功能

  • package.json 命令行可以 打包 yarn build 会生成dist文件夹 里面有开发依赖和生成依赖

  • vite:与webpack都是打包工具 可以配置访问端口

9.要把html的元素拆出来给.vue
10.<style scoped>//代表这个样式仅仅能作用与本页面
11.

<template>
       <Header/>//在这里定义组件
</template>
  <script>
  import Header from './components/Head.vue'//引入组件
  export default{//es6的语法输出模块
        name:"app", //输出到app
        data(){
  	return{ }
        },
        components:{
	Header
           }
         
 }

</script>	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值