Closed simuusang closed 3 years ago
给复现,按文档来就行
在 fetch.ts
中 return value
props.asyncData
拿到 layout fetch 与 page fetch 的合并结果
props.fetchData
拿到当前fetch,layout fetch 或者 page fetch 的结果
@zhangyuang 感谢您的回复,按照您说的我试了一下在layout/index.vue
中还是获取不到fetchData
,在fetch.ts
里面返回value
只能获取到 asyncData
的值
layout/App.vue 代码如下
<template>
<router-view :fetchData="fetchData" />
</template>
<script lang="ts">
import { Button } from "vant";
// 在这里可以进行一些全局组件的注册逻辑
export default {
props: ["fetchData"],
name: "AlphaApp",
components: {
Button,
},
setup(props) {
console.log("layout/App.vue --------> fetchData", props.fetchData);
},
created() {
const app = window.__VUE_APP__;
app.use(Button);
},
};
</script>
layout/index.vue 代码如下
<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
name: "Layout",
props: ["fetchData", "asyncData"],
setup(props) {
console.log("layout/index.vue --------> fetchData", props.fetchData);
console.log("layout/index.vue --------> asyncData", props.asyncData);
},
});
</script>
pages/index/fetch.ts
export default async (
{ store, router },
ctx?: ISSRContext<{
apiService?: IApiService;
}>
) => {
const data = __isBrowser__
? await (await window.fetch("/api/index")).json()
: await ctx?.apiService?.index();
await store.dispatch("indexStore/initialData", { payload: data });
return data;
};
输出结果
那是因为你根本就没有 layout/fetch 啊。。
好的 谢谢解答我明白了
按着文档上面通过
props
获取到的fetchData
是一个空对象