Vue2&3-props配置功能
Vue2-props配置
功能:接收从其他组件传过来的数据,将数据从静态转为动态 注意: 同一层组件不能使用props,必须是父组件传子组件的形式。父组件传数据,子组件接收数据。 不能什么数据都接收,可能会出现一些奇怪的bug props接收过来的数据不要修改,页面渲染可能没有问题,但控制台会报错,而且不符合规范
props的三种接收方法:
props : [ 'a' , 'b' ]
props : { a : String b : Number
}
props : { a : { type : Number, required : true } , b : { type : Number, default : 10 }
}
传数据的形式(传数据的形式可对应任意一种接受数据的方法):
< Info name= "张三" : age= "12" > < / Info>
props : [ 'name' , 'age' ]
< Info : list= "list" > < / Info>
data ( ) { return { list : [ { id : '001' , name : 'zhangsan' , age : '10' } , { id : '002' , name : 'lisi' , age : '20' } ] }
}
props : [ 'list' ]
< Info : list= "list" > < / Info>
method : { list ( ) { ... ... }
}
props : [ 'list' ]
注:传数据的形式有很多,不局限以上用法,也可以在computed : {}中传数据等
怎么用?
< template> < div> < h1> { { msg} } < / h1> < Info name= "张三" : age= "12" > < / Info> < / div>
< / template> < script> import Info from './components/Info.vue' export default { name : 'App' , data ( ) { return { msg : '个人信息' } } , components : { Info} }
< / script>
< template> < div> < h3> 姓名:{ { name} } < / h3> < h3> 年龄:{ { age} } < / h3> < / div>
< / template> < script>
export default { name : 'Info' , data ( ) { return { name : this . name} } , props : [ 'name' , 'age' ] props : { name : String age : Number } props : { name : { type : Number, required : true } , age : { type : Number, default : 10 } }
}
< / script>
Vue3-props配置
props的配置在Vue2和Vue3上基本相同,这里主要说明如何用setup调用props的接受数据
setup如何调用props? 在setup函数中是没有this关键字的,所以在代用setup函数之前,会先给setup传递一个参数(props) props参数在setup中被包装成一个代理对象,同样具有响应式处理能力
< template> < User name= "jack" : age= "age" > < / User>
< / template> < script> import { ref } from 'vue' import Info from './components/Info.vue' export default { name : 'App' , components : { Info} , setup ( ) { let age = ref ( 20 ) return { age} } }
< / script>
< template> < h2> 姓名:{ { name} } < / h2> < h2> 年龄:{ { age} } < / h2>
< / template> < script> export default { name : 'Info' , props : [ name, age] , setup ( props ) { console. log ( props. name) ; console. log ( props. age) ; } }
< / script>