我有一个基于 React Starter Kit 的应用程序。
每个页面都有一个 fetch 函数,在 componentDidMount 生命周期中从 API 获取数据。
我想先获取数据,然后用数据渲染页面并将其返回给客户端。就我而言,UX 无论如何。
我知道 RSK 是同构的,我已准备好更改样板或创建自己的样板。但我不明白如何在渲染页面之前从 API 获取数据(我的意思是如何告诉快递服务器需要什么数据)。
App现在如何获取数据:
example_page.js:
import getBooks from 'queries/getAllBooks';
...
class IdTag extends React.Component {
componentDidMount(){
this.getBooks();
}
getBooks() => {
const request = getBooks();
request
.then(...)
}
}
getAllBooks.js:
import doGet from './doGet';
let result = '';
const request = async () => {
const reqUrl = '/api/books/';
result = await doGet(reqUrl);
return result;
};
export default request;
doGet.js:
const request = async reqUrl => {
let requestResult = null;
const doQuery = async () => {
const response = await fetch(reqUrl, {
method: 'GET',
});
const result = await response.json();
result.status = response.status;
return result;
};
requestResult = await doQuery();
return requestResult
}
...
export default request;
server.js:
...
app.get('/api/*', async (req, res) => {
const newUrl = config.gate.URL + req.url.replace('/api', '');
const accessToken = req.cookies.access_token;
const response = await nodeFetch(newUrl, {
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
const result = await response.json();
res.status(response.status);
res.json(result);
});
...