我想将setState
传递给子进程,但是当setState
调用时,我需要重载更多的操作。
我能做到,
但我不能接受setState
的行为,以获得正常的setState
工作的prev状态。
示例:
父函数
function Parent (){
const [isOpen, setIsOpen] = useState(false)
const $setIsOpen = (isOpen) => {
//do somthing
setIsOpen(isOpen)
}
Child(isOpen ,$setIsOpen)
}
子函数
function Child (isOpen, setIsOpen){
setIsOpen(true) //this work
setIsOpen((prevState) => (!prevState))//but this doesn't work
}
你怎么能这么做?
如果你能给我一个TypeScript的例子,我将不胜感激。
1条答案
按热度按时间xuo3flqw1#
在这种情况下,对于typescript,您应该使用正确的类型,因为是布尔值将是:
React.SetStateAction<boolean>
。它可以以与setState
函数相同的方式接收值。现在,对于
Child
组件,为props添加适当的类型。只要考虑到传递给
$setIsOpen
的值现在可能是一个函数,如果你要有一些依赖于该值的逻辑,需要检查内部。