javascript - React:如何从模态中提取值?
问题描述
我有一个 Chakra UI 模式,它打开一个按钮的 onClick。我希望能够提取用户在关闭模态时放入输入/单选按钮的值。Modal 类和 Modal/Button 渲染如下所示。由于输入和单选按钮是在 Modal 类中定义的,是否可以获得它们的最终值onClose
?
模态的.tsx
import React from 'react'
import {
Modal as ChakraModal,
ModalOverlay,
ModalContent,
ModalHeader,
ModalFooter,
ModalBody,
ModalCloseButton,
RadioGroup,
Stack,
Radio,
VStack
} from "@chakra-ui/react"
import Button from './Button'
import Input from './Input'
type Props = { isOpen : boolean } & { onClose : () => void} & { label : string }
const Modal = ({ label, isOpen, onClose, ...rest }: Props) => (
<ChakraModal {...rest} isOpen={isOpen} onClose={onClose}>
<ModalOverlay />
<ModalContent>
<ModalHeader>{label}</ModalHeader>
<ModalCloseButton />
<ModalBody>
<VStack spacing={4}>
<RadioGroup>
<Stack direction="row">
<Radio value="1">Annually</Radio>
<Radio value="2">Semi-Annual</Radio>
<Radio value="3">Quarterly</Radio>
<Radio value="4">Monthly</Radio>
</Stack>
</RadioGroup>
<Input
label="Custom Interest rate"
name="Custom Interest rate"
/>
</VStack>
</ModalBody>
<ModalFooter>
<Button colorScheme="blue" mr={3} onClick={onClose}>
Save
</Button>
</ModalFooter>
</ModalContent>
</ChakraModal>
)
export default Modal
使成为
<Button onClick={onOpen}> Settings </Button>
<Modal
label="Custom Settings"
isOpen={isOpen}
onClose={onClose}
/>
解决方案
您可能应该发送一个状态作为模态的道具。
const [state, setState] = React.useState();
<Modal
label="Custom Settings"
isOpen={isOpen}
onClose={onClose}
onChange={setState}
/>
要获取 setState 的类型,请将鼠标悬停在变量上,您可以看到类型定义。
推荐阅读
- java - SpringBoot Rest Controller中与Jackson@JsonIgnore合作MongoDB延迟加载
- angular - 事件发射多级策略
- angular - Angular 7 observables 传递给子组件部分工作
- javascript - es6方法中函数内部的This值
- micronaut - 上传文本文件槽 REST 控制器
- python - 了解 LSTM ANN 中的某些参数,例如“回顾”、“时间步长”
- python - re.compile().match 在 win10 和 ubuntu 上使用 python3 的不同结果
- azure-devops - 未找到具有指定模式的包:d:\a\r1\a\**\*.zip -- 解决方案
- reactjs - 为什么我得到 NaN ?应用程序似乎可以工作,但起点是 NaN。我该如何解决这个问题?
- sql - 如何在条件下选择所有行但加入信息