我有一个用户创建产品的表单。此表单使用react-hook-form来跟踪所有表单输入。我想重复使用的形式,因为“编辑”页面是完全相同的形式,但与从服务器的数据填写的字段。
这种情况下最好的做法是什么?有一个ProductForm
组件和一个可选的product
属性吗?或者只是将表单复制粘贴到两个不同的文件中?
这就是我在想的:pages/product/create/index.tsx
export default function Create() {
return <ProductForm />
}
pages/product/create/edit.tsx
export default function Edit({id}: {id: number}) {
const product = // Get the product with the id from the slug
return <ProductForm product={product}
}
export async function getServerSideProps({ params }) {
return {
props: { id: params.id }
}
}
我问题的第二部分是编辑页面从服务器getServerSideProps
或getStaticProps
获取产品的最佳实践是什么。我应该从其中一个函数中的slug中获取带有id的产品吗?所以编辑看起来像这样pages/product/create/edit.tsx
export default function Edit({product}: {product: Product}) {
return <ProductForm product={product}
}
export async function getServerSideProps({ params }) {
const product = // get product from slug id
return {
props: { product: product }
}
}
新的Nextjs,所以任何想法,这是赞赏
1条答案
按热度按时间fae0ux8s1#
是的,这正是你应该做的。
创建单个窗体组件,然后将其导入到创建和编辑页中。
在编辑页面上,获取产品并将其传递到表单,就像您在这里所做的那样。
最后,表单组件中有一些逻辑来确定创建或编辑模式,然后确定处理提交或其他内容的不同行为。