Vue HOC设置问题(使用vue-compose)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue HOC设置问题(使用vue-compose)相关的知识,希望对你有一定的参考价值。
我正在尝试按照函数式编程进行设置。由于某种原因,我的index.js
文件没有将道具传递给我HelloWorld.vue
组件。下面是index.js文件。
import { compose, withData, withProps, withHandlers } from 'vue-compose';
import Vue from 'vue';
import HelloWorld from './HelloWorld.vue';
export const enhancer = compose(
withData({
someInjectedProp: {
initialValue: "Bla bla"
},
ecosystem: {
iniitalValue: [
{
text: 'vuetify-loader',
href: 'https://github.com/vuetifyjs/vuetify-loader'
},
{
text: 'github',
href: 'https://github.com/vuetifyjs/vuetify'
},
{
text: 'awesome-vuetify',
href: 'https://github.com/vuetifyjs/awesome-vuetify'
}
],
},
importantLinks: {
initialValue: [
{
text: 'Documentation',
href: 'https://vuetifyjs.com'
},
{
text: 'Chat',
href: 'https://community.vuetifyjs.com'
},
{
text: 'Made with Vuetify',
href: 'https://madewithvuetifyjs.com'
},
{
text: 'Twitter',
href: 'https://twitter.com/vuetifyjs'
},
{
text: 'Articles',
href: 'https://medium.com/vuetify'
}
],
},
whatsNext: {
iniitalValue: [
{
text: 'Explore components',
href: 'https://vuetifyjs.com/components/api-explorer'
},
{
text: 'Select a layout',
href: 'https://vuetifyjs.com/layout/pre-defined'
},
{
text: 'Frequently Asked Questions',
href: 'https://vuetifyjs.com/getting-started/frequently-asked-questions'
}
]
}
}),
// withProps((props) => ({
// customFunction(this: Vue){
// //do something like call api
// }
// }))
)
export default enhancer(HelloWorld);
以下是应该接收道具的vue组件,但不是:
<v-container>
<v-layout
text-xs-center
wrap
>
<v-flex xs12>
<v-img
:src="require('../assets/logo.svg')"
class="my-3"
contain
height="200"
></v-img>
</v-flex>
<v-flex mb-4>
<h1 class="display-2 font-weight-bold mb-3">
Welcome to Vuetify
</h1>
<p class="subheading font-weight-regular">
For help and collaboration with other Vuetify developers,
<br>please join our online
<a href="https://community.vuetifyjs.com" target="_blank">Discord Community</a>
</p>
</v-flex>
<v-flex
mb-5
xs12
>
<h2 class="headline font-weight-bold mb-3">What's next?</h2>
<v-layout justify-center>
<a
v-for="(next, i) in whatsNext"
:key="i"
:href="next.href"
class="subheading mx-3"
target="_blank"
>
{{ next.text }}
</a>
</v-layout>
</v-flex>
<v-flex
xs12
mb-5
>
<h2 class="headline font-weight-bold mb-3">Important Links</h2>
<v-layout justify-center>
<a
v-for="(link, i) in importantLinks"
:key="i"
:href="link.href"
class="subheading mx-3"
target="_blank"
>
{{ link.text }}
</a>
</v-layout>
</v-flex>
<v-flex
xs12
mb-5
>
<h2 class="headline font-weight-bold mb-3">Ecosystem</h2>
<v-layout justify-center>
<a
v-for="(eco, i) in ecosystem"
:key="i"
:href="eco.href"
class="subheading mx-3"
target="_blank"
>
{{ eco.text }}
</a>
</v-layout>
</v-flex>
</v-layout>
</v-container>
</template>
<script>
export default {
props: ['someInjectedProp','ecosystem','importantLinks','whatsNext']
}
</script>
<style>
</style>
当查看vue devtools时,我可以看到所有的道具都是undefined
而没有接收索引文件中定义的值。
答案
我的一位同事发现了这个问题,它实际上是在app.vue
文件中(运行create vue <app name>
时创建的)导入查找.componentsHelloWorld.vue
,一旦使用HOC,它需要导入.componentsindex
。
以上是关于Vue HOC设置问题(使用vue-compose)的主要内容,如果未能解决你的问题,请参考以下文章
material-ui / 如何使用 'withStyles()' 设置 HOC 样式?
在 react 里写 vue3 ? 还写了自定义 hooks和 Hoc 构建了响应式 !
使用 HOC 可拖动元素反应 DnD 引发无法设置未定义错误的属性“道具”