Comments (6)
@posva I think It's feasible. Assigning the param of onServerPrefetch
to $options.serverPrefetch
should be enough.
from composition-api.
There exists a pull request.
from composition-api.
I'm also encountering this issue.
I have made the change from PR #80 locally and the onServerPrefetch
hook is being called and I can see async function being called server side, but I'm not sure how to assign the result of the call to a reactive property to be used in the template.
What is the correct way to assign the result of a server side async call to a reactive property?
Sample code:
import { createComponent, reactive, watch, onServerPrefetch } from '@vue/composition-api'
import gql from 'graphql-tag'
async function useCourses(client) {
return client
.query({
query: gql`
query getCourses {
courses {
id
title
author
description
topic
url
}
}
`
})
.then(res => res.data.courses)
}
const Courses = createComponent({
name: 'Courses',
components: {
'c-course': () => import('./Course.vue')
},
setup(initialProps, context) {
const { defaultClient: apolloClient } = context.root.$apolloProvider
const state = reactive({
courses: []
})
onServerPrefetch(async () => {
// Working: the gql call is being made
const result = await useCourses(apolloClient)
// console.log(result)
// Not working: Can't assign the result to state.courses
watch(async () => {
state.courses = result
})
})
// Working: client side call and assignment
watch(async () => {
state.courses = await useCourses(apolloClient)
})
return { state }
}
})
export default Courses
from composition-api.
I think this is a limitation of this plugin in Vue 2. Making the new API work with SSR will require change to internals that we will do in Vue 3, but not Vue 2.
from composition-api.
@liximomo if this is indeed a limitation we can label it as wont fix and close it
from composition-api.
not sure how to test this one, but I can implement it.
from composition-api.
Related Issues (20)
- Typing component refs HOT 2
- onMounted is called when there is no active component instance to be associated with HOT 7
- Variables created with ref in <templete>,do not automatically expand value HOT 4
- why setup run twice in vue2 HOT 8
- setup function provide a wrong prop type,when use type: Function HOT 3
- not work nice in web component, no error HOT 2
- How to avoid duplicate register composition-api ? HOT 1
- It doesn't work with nuxt 2 HOT 2
- watch 的回调如果发生错误,会一直触发调用 HOT 1
- ComponentRenderProxy类型与Vue不兼容,导致Ts编译报错 HOT 2
- vue2项目, 怎么在option API的基础上, 混用composition API? HOT 1
- render 函数中使用 web components 自定义标签,移除了HTML中原生的 slot 属性 HOT 3
- No support for Vue >= 2.7
- cdn方式引入导致vue devtools调试数据丢失 HOT 2
- 客户端使用vuecli 打包出来的commonjs模式的库,出现“Error: [vue-composition-api] must call Vue.use(VueCompositionAPI) before using any functio” HOT 2
- setup返回的data在development环境下会被expose到全局mixin的data中 HOT 2
- 是否有提供withDefaults?
- 安装时,报vue版本范围错误 HOT 2
- 【Bug】Memory Leak cause by toVue3ComponentInstance HOT 1
- 【BUG】watch() 传入reactive类型的数据,vue3.4与3.3表现不一致 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from composition-api.