如何在useCallback钩子中调用组件?模态框点击不渲染问题求助
问题分析与修复
你的代码核心问题在于handleClick函数只是返回了AddItemToListModal组件,没有执行任何实际渲染或触发模态框显示的逻辑——React组件不会因为返回它就自动渲染到页面上。
修复方案
假设AddItemToListModal是一个受控组件(通过isOpen属性控制显示状态,onClose处理关闭逻辑),你需要通过状态来管理模态框的显示:
import React, { useCallback, useState } from 'react'; import { OverflowMenuItem } from '@carbon/react'; import { useTranslation } from 'react-i18next'; import { AddItemToListModal } from '@myLib/commons-lib'; const AddToListOverflowMenuItem = ({ patientUuid }) => { const { t } = useTranslation(); const [isModalOpen, setIsModalOpen] = useState(false); const handleClick = useCallback(() => { setIsModalOpen(true); // 点击时打开模态框 }, []); const handleModalClose = useCallback(() => { setIsModalOpen(false); // 关闭模态框 }, []); return ( <> <OverflowMenuItem itemText={t('addToList')} onClick={handleClick} style={{ maxWidth: '100vw', }} /> {/* 渲染模态框,通过isOpen控制显示状态,传递必要的props */} <AddItemToListModal isOpen={isModalOpen} onClose={handleModalClose} patientUuid={patientUuid} /> </> ); }; export default AddToListOverflowMenuItem;
额外说明
如果你的AddItemToListModal是通过静态方法触发(比如open()),则调整handleClick逻辑即可:
const handleClick = useCallback(() => { AddItemToListModal.open({ patientUuid }); // 调用模态框的打开方法 }, [patientUuid]);
这种情况需要确认你的自定义模态框是否提供了这类API。
内容的提问来源于stack exchange,提问作者Jamie Arodi
相关产品推荐
相关产品推荐

