javascript - 服务器端呈现的页面并不总是正确呈现
问题描述
我有一个非常简单的 NextJS 项目,它只有一个页面。该应用程序设置为使用 redux、next-redux-wrapper 和 redux thunk。该页面应始终在服务器端呈现。
这是页面代码的样子:
pages/index.js
const index = () => {
const { products } = useSelector((state) => state.productList);
return {
products.map((product) => (
<div key={product._id} className="column is-4-tablet is-3-desktop">
<FoodItem foodItem={product} />
</div>
));
}
}
export const getServerSideProps = wrapper.getServerSideProps(({ store }) => {
store.dispatch(listProducts());
return {
props: {},
};
});
// pages/_app.js
import { wrapper } from "redux/store";
const MyApp = ({ Component, pageProps }) => {
return (
<>
<Component {...pageProps} />
</>
);
};
export default wrapper.withRedux(MyApp);
我注意到的奇怪行为是,有时当用户刷新浏览器时,并没有调用服务器来重新生成页面。这会导致页面为空。
实际行为应该是当用户刷新页面或导航到页面时,应该调用服务器重新渲染页面。
我不确定有时当用户刷新页面或导航到页面时,浏览器不会重新调用服务器以重新呈现页面。
解决方案
我是 NextJS 的新手,但我认为您应该尝试将 productList 对象传递给 index.js 页面,而不是 useSelector
所以从props中的getServerSideProps中返回yourObject:{yourObject},然后从index =({yourObject})访问,然后尝试显示它
希望它有效...
推荐阅读
- css - 在 React 中使用过渡覆盖导航栏
- node.js - 部署后:带有 Office365 和 SSLv3 的节点 IMAP MailListener 错误:140059098205512:error:1408F10B:SSL
- r - 如何根据其他变量中的值为每个人创建二进制变量?
- python - 计算每个 K-means 集群的数据点
- autodesk-forge - IFC 的 Translation 属性是什么意思?
- opencv - 有没有办法知道没有立体校正的视差是否为负?
- apache-spark - Mesos 实现
- consul - 当 consul 节点在服务器模式下运行时,/v1/agent/services 将返回哪个端点?
- python - 将 str 拆分为 int 然后变成字典
- sorting - 无法在 ARM 中对数组进行排序。已排序,但有数字缺失和重复