Next.js getInitialProps 未在 index.js 页面上呈现
Next.js getInitialProps not rendering on the index.js page
我真的搞不懂 Next.js 上的这段代码有什么问题。
index.js :
import { getUsers } from "../utils/users";
import React from "react";
Home.getInitialProps = async (ctx) => {
let elements = [];
getUsers().then((res) => {
res.map((el) => {
elements.push(el.name);
});
console.log(elements);
});
return { elements: elements };
};
function Home({ elements }) {
return (
<div>
{elements.map((el, i) => {
<p key={i}>{el}</p>;
})}
</div>
);
}
export default Home;
这不会在我的主页上呈现任何内容,但控制台仍会在服务器端(在 vscode 控制台内)记录正确的数据。我实在搞不懂是怎么回事,我完全按照next.js网站上的article。
getUsers 函数是一个异步函数,它 returns 一个对象数组(带有 name,surname 道具),在这种情况下 .then
我正在获取名称并将它们推入一个正确记录的数组到控制台。
我怎样才能使我在页面上呈现的这些数据?肯定和SSR有关。
问题是使用异步函数。尝试如下。
...
elements = await getUsers();
...
在您的代码中,组件在响应完成之前呈现。所以数据没有被渲染。建议使用“async...await...”。事实上,“async”和“await”就像一对。
我真的搞不懂 Next.js 上的这段代码有什么问题。 index.js :
import { getUsers } from "../utils/users";
import React from "react";
Home.getInitialProps = async (ctx) => {
let elements = [];
getUsers().then((res) => {
res.map((el) => {
elements.push(el.name);
});
console.log(elements);
});
return { elements: elements };
};
function Home({ elements }) {
return (
<div>
{elements.map((el, i) => {
<p key={i}>{el}</p>;
})}
</div>
);
}
export default Home;
这不会在我的主页上呈现任何内容,但控制台仍会在服务器端(在 vscode 控制台内)记录正确的数据。我实在搞不懂是怎么回事,我完全按照next.js网站上的article。
getUsers 函数是一个异步函数,它 returns 一个对象数组(带有 name,surname 道具),在这种情况下 .then
我正在获取名称并将它们推入一个正确记录的数组到控制台。
我怎样才能使我在页面上呈现的这些数据?肯定和SSR有关。
问题是使用异步函数。尝试如下。
...
elements = await getUsers();
...
在您的代码中,组件在响应完成之前呈现。所以数据没有被渲染。建议使用“async...await...”。事实上,“async”和“await”就像一对。