NextJS router.query 没有提供 ID 参数

NextJS router.query not giving the ID param

我正在使用 nextjs 作为前端,使用 CodeIgniter 作为后端来制作 crud 我正在学习前端是 reactjs 的教程。在 reactJs 中,当 crud 的更新部分到来时,我们可以使用 react-router-dom useParam 函数来获取 ID,但在 nextJS 中,我们使用 router.query 并且它不起作用,所以我现在陷入困境如何获取特定列的 ID 以更新它

 const { id } = router.query;

  const getProductById = async () => {
// if (id !== undefined && id != null && id > 0) {
  const response = await axios.get(`http://localhost:8080/companies/${id}`);
  setName(response.data.name);
  setCreatedBy(response.data.createdBy);
  console.log(id);
// }};

这是我正在使用的代码,它给出了一个错误

`http://localhost:8080/companies/undefined`

在静态优化的页面上,路由器查询在第一次呈现时可以为空。 尝试将代码包装在 useEffect

useEffect(()=>{
 const { id } = router.query;

  const updateProduct = async (e) => {
    e.preventDefault();
    await axios.patch(`http://localhost:8080/companies/${id}`, {
      company_name: name,
      created_by: createdBy,
    });
    router.push("/products");
  };
},[router.query])

你可以在 server-side 上获取 query.id,然后将其传递给 client-side

export async function getServerSideProps(context) {
  const { id } = context.query;
  console.log(`query id: ${id}`);
  return { props: { id } };
}

现在 id 作为 prop 传递给客户端:

const YourComponent=(props)=>{
   console.log("passed id prop",props.id)
}