Mik*_*kko 4 vue.js vue-component
我有一个文件组件header.vue:
<template>
<h1>{{text}}</h1>
</template>
<script>
export default {
data() {
return {
text: 'Header text',
};
},
};
</script>
Run Code Online (Sandbox Code Playgroud)
我在我的代码中要求如下
const Header = require('components/header.vue');
Run Code Online (Sandbox Code Playgroud)
并称之为:
const header = new Vue({
el: '#header',
data: {
text: 'New header text',
},
render: h => h(Header),
});
Run Code Online (Sandbox Code Playgroud)
该组件已呈现,但文本说Header text而不是New header text.为什么?
这里有两个独立的组件,Header组件和您创建的匿名组件(with new Vue()).匿名组件将Header组件呈现为其子组件.两个组件都有不同的data属性; 父母text = 'New header text'和孩子都有text = 'Header text'.
有两种方法(在我的头顶),你可以实现这一点:
text使用新值覆盖其data属性:const Header = require('components/header.vue');
const HeaderComp = Vue.extend(Header);
const header = new HeaderComp({
el: '#header',
data: {
text: 'New header text',
},
});
Run Code Online (Sandbox Code Playgroud)
text道具,您将能够从父母传递数据到孩子:header.vue
<script>
export default {
props: ['text'],
};
</script>
Run Code Online (Sandbox Code Playgroud)
用法
const Header = require('components/header.vue');
// Using render function
const header = new Vue({
el: '#header',
render: h => h(Header, {
props: {
text: 'New header text',
},
}),
});
// Using template
const header = new Vue({
el: '#header',
components: {
Header,
},
template: '<header text="New header text"/>',
});
Run Code Online (Sandbox Code Playgroud)
我认为可以有两种方法来解决这个问题:
要传递道具,您必须进行以下更改header.vue:
<script>
export default {
props: ['text'],
};
</script>
Run Code Online (Sandbox Code Playgroud)
并称其为:
const header = new Vue({
template: '<header :text="text" />',
data: {
text: 'New header text',
}
});
Run Code Online (Sandbox Code Playgroud)
header组件中使用它。| 归档时间: |
|
| 查看次数: |
4889 次 |
| 最近记录: |