我尝试获得
之类的子页面在nextjs https://nextjs.org/
中我能够创建
之类的页面通过放置类似
的页面page1.js
在页面“文件夹”中,但如何创建子页面,如
我尝试在Pages文件夹中创建子文件夹,但这不起作用并输出错误。
我们将不胜感激
答案 0 :(得分:0)
您可以使用express.js之类的服务器并使用路由系统:
const express = require('express')
const next = require('next')
const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
app.prepare()
.then(() => {
const server = express()
server.get('/test/:page', (req, res) => {
const page = req.params.page;
let file = '';
switch(page) {
case 'page1':
file = '/page1';
break;
case 'page2':
file = '/page2';
break;
default:
file = '/page1';
}
return app.render(req, res, file, { page })
})
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(port, (err) => {
if (err) throw err
console.log(`> Ready on http://localhost:${port}`)
})
})
答案 1 :(得分:0)
在pages文件夹内创建一个测试文件夹,nextjs会自动创建一个带有该文件夹的名称和所创建页面的子路由。
答案 2 :(得分:0)
在@ karin-bhandari之类的页面内创建测试文件夹。然后,为每个子页面创建一个新文件夹,并在其中包含类或函数,因此您的情况将是:
./ pages / tests / project1 / project1.js
./ pages / tests / project1 / project2.js
如果您具有 tests 目录的动态路由,则可以有条件地呈现页面
const Test = props => {
const router = useRouter();
return (
<Layout>
{router.query.subdirectory === "edit" ? (
<EditPage />
) : (
<Test id={router.query.id} data={props.data} />
)}
</Layout>
);
};
其中id
是测试标识符,subdirectory
是子目录路径。