静态传值
使用属性的方式,然后子组件使用props进行接收;
静态传递的只能是字符串类型String
const app = Vue.createApp({
template: `
<div>静态传值</div>
<global name="静态传值示例"/>
<br>
`
});
app.component('global', {
props: ['name'],
template: `
<h3>{{name}}</h3>
<h4>{{typeof name}}</h4>
`
});
动态传值
把传递参数放到Vue的data数据项里,template中通过v-bind绑定这个属性
动态传参的就可以是多种类型,甚至是一个函数(方法)
data() {
return {
nameStr = '动态传值示例',
nameInt: 123
}
}
<global :name="nameStr"/>
<global :name="nameInt"/>
data() {
return {
goFunc: () => {
alert('Go function!');
}
}
}
<func-test :go="goFunc"/>
app.component('FuncTest', {
props: ['go'],
methods: {
goClick() {
alert("Function Test");
this.go();
}
},
template: `
<button @click="this.goClick">Click Go</button>
`
});
Demo19.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello World</title>
<script src="https://unpkg.com/vue@next"></script>
</head>
<style>
.blue {
background-color: blue;
}
</style>
<body>
<div>
<h4>静态传值</h4>
<p>使用属性的方式,然后子组件使用props进行接收;</p>
<p>静态传递的只能是字符串类型String</p>
<h4>动态传值</h4>
<p>把传递参数放到Vue的data数据项里,template中通过v-bind绑定这个属性</p>
<p>动态传参的就可以是多种类型,甚至是一个函数(方法)</p>
<br>
</div>
<div id="app"></div>
</body>
<script>
const app = Vue.createApp({
data() {
return {
nameStr: '动态传值示例',
nameInt: 123,
goFunc: () => {
alert('Go function!');
}
}
},
template: `
<div>静态传值</div>
<global name="静态传值示例"/>
<br>
<div>动态传值-字符串</div>
<global :name="nameStr"/>
<br>
<div>动态传值-数值</div>
<global :name="nameInt"/>
<br>
<div>动态传值-函数</div>
<func-test :go="goFunc"/>
<br>
`
});
app.component('global', {
props: ['name'],
template: `
<h3>{{name}}</h3>
<h4>{{typeof name}}</h4>
`
});
app.component('FuncTest', {
props: ['go'],
methods: {
goClick() {
alert("Function Test");
this.go();
}
},
template: `
<button @click="this.goClick">Click Go</button>
`
});
const vm = app.mount("#app");
</script>
</html>