【发布时间】:2021-01-30 00:33:59
【问题描述】:
由于他们需要在构建时之后获取的数据,我该如何延迟上述函数的执行,直到收到数据?
export async function getStaticPaths() {
// get the paths we want to pre render based on products
const paths = products.map((product) => ({
params: { slug:
product.slug }
}));
console.log(paths,"Paths in getStaticPaths()")
return { paths, fallback: false };
}
export async function getStaticProps({ params }) {
// get product data based on slug
const product = products.filter((single) => single.slug === params.slug)[0];
console.log(product,"In getStaticProps()")
return { props: { product } };
}
在上面,products 包含所有导入的原始数据。
我需要将这个数据导入替换为一个返回数据的函数的导入,但由于调用尚未完成,我最终得到了 null。
【问题讨论】:
-
请用不适合您的示例详细说明您的问题!
-
当前本地存储的数据有助于生成所需的路径。现在从外部数据库调用数据,该数据库仅在几秒钟后才可用,当 getStaticProps() 和 .....Paths () 使用空数据点,因为它尚未填充数据库数据。
-
不会有这样的工作吗? ``` // db.js 导出 const db = createDb(config); // main.js import { db } from './src/db/';导出异步函数 getStaticPaths() { const paths = await db.readDocument('PATH'); return { paths, fallback: true or false // 参见下面的“fallback”部分 }; } ```
-
请添加代码示例
-
导入一个保存应该保存数据的变量和导入一个具有调用时返回数据的函数的类之间有什么区别?顺便说一句,数据库调用是异步的,它将数据库值存储在一个单例中,然后我试图访问它。但是由于上面的 getStaticPaths() 是在任何我得到 null insitead 数据之前执行的。不会发生同样的事情,还是等待(如您上面的代码)阻止这种情况?
标签: reactjs react-native next.js