Javascript Vue组件数据函数-为空
我有一个Vue.js组件,定义如下:Javascript Vue组件数据函数-为空,javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,我有一个Vue.js组件,定义如下: module.exports = Vue.component('folder-preview', { props: ['name', 'path', 'children', 'open'], template: `... `, methods: mapActions([ ]), computed: mapState([ ]), data: ()=> { console.lo
module.exports = Vue.component('folder-preview', {
props: ['name', 'path', 'children', 'open'],
template: `...
`,
methods: mapActions([
]),
computed: mapState([
]),
data: ()=> {
console.log(this);
return {
collapsed: (this.open !== 'true')
}
}
});
基本上,我试图将折叠
作为组件的本地数据,但将在prop中传递的值作为初始值。然而,这看起来像是这个。open
总是未定义的。事实上,console.logging这个
打印一个空对象,我似乎不明白为什么
我有什么地方出错吗?代码中的问题很微妙:您将数据声明为箭头函数 如中所述,箭头函数从定义上下文获取
this
,而常规函数从调用上下文获取this
。将data
设置为箭头函数意味着它无法正确接收组件范围
如果声明为常规函数,而该函数没有作用域this
关闭,则该组件工作正常
Vue.component('sample'{
道具:[“打开”],
模板:“{collapsed}}”,
数据(){
返回{
折叠:this.open!==“true”
}
}
})
新Vue({
el:“#应用程序”
})
如果打印此会发生什么情况。在创建的中打开(添加属性创建的,数据和计算的,以及数据,创建的获取函数)?为什么不能将“打开中的道具”用作折叠并在“父级”中设置值element@kevguy在创建的中,此
也是empty@usrNotFound设置折叠的是组件本身。父母不应该关心/不需要意识到这一点。它是组件的内部可能的副本