我对如何编写一个NextJS应用程序感到困惑,当我具有可重用的组件和“链接”以导航到应用程序的其他区域时,该应用程序将呈现页面服务器端。
文档说
我的查询
我不清楚以下内容
我的应用程序。
我认为用示例应用程序来说明我想做的事情会更容易。
这是我的应用程序的图形表示。
项目结构
所有页面均使用布局模板添加页眉和页脚的主要结构,然后使用组件在页面中间添加其自己的内容
|- pages
|- index.js (i.e. tab-1)
|- tab2.js
|- tab3.js
|- tab4.js
|- aitem
|- [id].js
|- numitem
|- [id].js
|- Components
|- layout-template.js --- needs data to pass to header/footer
|- header.js
|- footer.js
|- AlphabetList --- needs data
|- AlphabetListItem --- needs data
下面是我的组件示例,显示了它们如何构成我的应用程序。从某些组件中可以看出,它们必须从服务器获取数据。因为它们是组件,所以它们正在“ componentWillMount”中获取数据,这意味着该组件不会呈现服务器端。因此,这似乎完全破坏了编写NEXTJS的目的。
Component = layout_template.js
需要从服务器获取数据以传递到页眉和页脚。
Component = header.js
仅包含jsx标记
页面= Index.js(URL =“ /”或“ / index”)
没有从服务器获取任何数据,仅指定了jsx标记
组件= AlphabetList.js
从服务器获取字母项目列表,并使用其他组件进行渲染
组件= AlphabetListItem.js
从服务器获取商品图像,然后进行渲染。单击此组件后,应用程序将转到项目详细信息页面
页面= AlphabetItemDetails.js(URL =“ aitem / [id]”)
从服务器获取有关该商品的其他信息,并呈现该商品的填充详细信息
我如何构建代码?
答案 0 :(得分:2)
首先,选项卡不必是新页面。标签可以是组件。
在主页(index.js)上,您可以将使用getInitialProps获得的数据传输到具有prop的组件。
您还可以通过布局通过prop将数据发送到诸如页眉和页脚之类的组件。对于标题中的徽标,您可以将_app.js创建到pages文件夹并使用getInitialProps从此处提取数据,而不必在每个页面上再次提取数据。
有关更多详细信息,您可以访问此页面https://nextjs.org/docs/getting-started