我正在使用react钩子构建一个调色板应用程序


  1. 但问题是,当我设置路由时,我希望我的调色板动态更改为path='/palette/:id'。
  2. 我希望这个id在parent中被获取,因为我想在一个函数中使用它来获取匹配的调色板,并将其作为道具返回给元素={}

我通过使用useParams()钩子在我的子组件(Palette.js)中获得id,但正如我提到的,我希望它在父组件(App.js)中。其次,我在parent中尝试了一个状态colorId,并在child中传递它的函数setColorId来设置它,但不工作。[输入图片描述](https://i.stack.imgur.com/uMhVC.png)

根据我所知道的,您可以尝试将setColorId放到useEffect:

// other imports
import { useParams } from 'react-router-dom'
import { useEffect } from 'react'
const Pattle = props => {
const { id } = useParams();
// other code
// run setColorId every time id change
useEffect(() => {
setColorId(id)
}, [setColorId, id]);
}

相关内容