gpt4 book ai didi

reactjs - 如何使用函数组件向 ref 公开函数?

转载 作者:行者123 更新时间:2023-12-03 13:41:59 24 4
gpt4 key购买 nike

我想创建一个组件,比如说一个日历功能组件,它可以公开一些函数,例如 nextMonthprevMonth 等。以便使用它的父组件可以访问这些函数使用ref。使用类组件很容易,因为实例方法会自动公开。如何使用功能组件实现相同的目标?我知道我可以为此使用渲染 Prop 模式。但还有其他解决方案吗?

粗略示例:

function Calendar() {
const nextMonth = () => {...}
const prevMonth = () => {...}

return (
<div>.....</div>
)
}


function Parent() {
const cal = createRef();

const onNext = () => {
cal.current.nextMonth();
}

return (
<>
<Calendar ref={cal} />
<button onClick={onNext}>Next</button>
</>
)
}

最佳答案

您可以使用useImperativeHandle钩子(Hook)。

const Calendar = React.forwardRef((props, ref) => {
const [month, setMonth] = useState(0)
const nextMonth = () => { setMonth((prev) => prev + 1) }
const prevMonth = () => { setMonth((prev) => prev - 1) }

useImperativeHandle(ref, () => ({
nextMonth,
prevMonth
}));

return (
<div>{month}</div>
)
})

const Parent = () => {
const cal = useRef()

const onNext = () => {
cal.current.nextMonth()
}

return (
<React.Fragment>
<Calendar ref={cal} />
<button type="button" onClick={onNext}>Next</button>
</React.Fragment>
)
}

关于reactjs - 如何使用函数组件向 ref 公开函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57337149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com