javascript - reactjs模式没有显示
问题描述
我是 react-js 的初学者。我有一个关于从 react-bootstrap 调用模态的问题。
我有一个带有返回语句的功能组件,我的模态就在其中。另外,我有一个带有<tr>
标签的组件。我想要的是当我从<tr>
标签中单击一行时,我想显示我的模态。
当我检查我的控制台时,没有返回任何错误。
这是我的完整代码:
const [employeeInfoModalShow, setEmployeeInfoModalShow] = useState(false);
const [employeeInfoModalDismiss, setEmployeeInfoModalDismiss] = useState(false);
const closeEmployeeInfoModalHandler = useCallback(() => {
setEmployeeInfoModalShow(false);
}, [employeeInfoModalShow]);
const modalDTR = () => {
if (!employeeInfoModalDismiss) {
setEmployeeInfoModalShow(true);
}
return (
<Modal
size="lg"
backdrop="static"
show={employeeInfoModalShow}
onHide={() => {
setEmployeeInfoModalDismiss(true);
setEmployeeInfoModalShow(false);
}}
backdropClassName="modalBackdrop"
>
{(() => {
return (
<>
<Modal.Header closeButton></Modal.Header>
<Modal.Body>
<p>Test</p>
</Modal.Body>
</>
);
})()}
</Modal>
);
}
const Date_columns = (props) => {
const [hovered, setHovered] = useState(false);
const toggleHover = () => {
setHovered((prevState) => (!prevState));
}
return (
<>
<tr onClick={modalDTR} onMouseEnter={toggleHover} onMouseLeave={toggleHover} className={hovered ? `${classes.trHover}`:''}>
<td align="center" className={`${classes.borderBlack}`}>{props.date_column}</td>
<td align="center" className={`${classes.borderBlack}`}></td>
<td align="center" className={`${classes.borderBlack}`}></td>
<td align="center" className={`${classes.borderBlack}`}></td>
<td align="center" className={`${classes.borderBlack}`}></td>
<td align="center" className={`${classes.borderBlack}`}></td>
<td align="center" className={`${classes.borderBlack}`}></td>
<td align="center" className={`${classes.borderBlack}`}></td>
</tr>
</>
)
}
解决方案
也许一个简单的解决方案可能是这个:
const Modal = ({ isOpen }) => {
// Custom Modal logic
return !isOpen ? null : <>{// JSX Code Here}</>
}
const DateColumns = ({ ...someProps}) => {
const [isOpen, setIsOpen] = React.useState(false);
const handleClick = (_event) => setIsOpen(true);
return (
<>
<Modal isOpen={isOpen} />
<tr>
<td onclick={handleClick}></td>
</tr>
</>
);
}
注意:如果您有多行,则需要使用更全局的东西,并避免为每行创建模式。如果是这样的话,React Context 可能是一个很好的选择。
推荐阅读
- javascript - 无法使用 Nightwatchjs 获取 html 报告
- python - 如何解压缩数据框列中存在的 json 的键,值将转换为键作为列,而使用 python 的值作为其值?
- javascript - 无法在“ReadableStream”上执行“pipeTo”:非法调用
- java - 检查创建了哪个模块 Guice 注入器
- bash - 如何为 curl 命令传递带空格的密码
- react-native - 如何使用 React Navigation 在 RootStack 设置中将对象发送到姊妹屏幕上的等待函数?
- amazon-web-services - SSL 问题:具有负载均衡器和外部域的 AWS Beanstalk
- reactjs - Material UI 在 value 属性中使用一个对象选择多个组件,添加重复条目
- azure-iot-hub - IoT 中心设备孪生中的 etag 有什么用?
- netsuite - 使用 record.load() 加载子记录