reactjs - 无法在无状态功能中使用引导反应模式
问题描述
我想要做的是添加引导反应模式并从无状态函数中触发它。我能找到的所有示例都需要更改组件状态中的“显示”,但是由于我没有使用 af 组件,所以我真的不知道该怎么做。
解决方案
https://react-bootstrap.github.io/components/modal/
您需要state
在某个地方显示模态。您可以使用钩子在功能性(不是真正的“无状态”)组件中使用useState
.
function App() {
const [open, setOpen] = useState(false);
return (
<>
<Button variant="primary" onClick={() => setOpen(true)}>
Launch demo modal
</Button>
<Modal show={open} onHide={() => setOpen(false)}>
<Modal.Header closeButton>
<Modal.Title>Modal heading</Modal.Title>
</Modal.Header>
<Modal.Body>Woohoo, you're reading this text in a modal!</Modal.Body>
<Modal.Footer>
<Button variant="secondary" onClick={() => setOpen(false)}>
Close
</Button>
<Button variant="primary" onClick={() => setOpen(false)}>
Save Changes
</Button>
</Modal.Footer>
</Modal>
</>
);
}
代码沙盒: https ://codesandbox.io/embed/z2ky5l128l
如果您不想这样做,那么您需要从树中较高的组件传递 prop,例如:
class App extends React.Component {
state = {
open: true,
}
render() {
return <ModalComponent open={open} hide={() => this.setState({open: false})} />
}
}
function ModalComponent = ({open, hide}) => (
<Modal show={open} onHide={hide}>
<Modal.Header closeButton>
<Modal.Title>Modal heading</Modal.Title>
</Modal.Header>
<Modal.Body>Woohoo, you're reading this text in a modal!</Modal.Body>
<Modal.Footer>
<Button variant="secondary" onClick={hide}>
Close
</Button>
</Modal.Footer>
</Modal>
)
推荐阅读
- visual-studio - UWP - 证书即将用完。我有哪些选择?
- java - 有没有办法在 servlet 中动态触发 SSL/TLS 重新协商?
- mysql - 没有 MAX 函数和相关子查询的 MySQL 中的 MAX 值
- javascript - 尝试使用 Node Express 发送 POST 响应,错误 Invalid status code
- java - Spring Cloud Gateway - 尝试读取 Web 过滤器中的请求正文时请求卡住
- javascript - 桌面 IE 11(edge) 应用移动 CSS,然后在调整窗口大小时应用普通 CSS
- angular-material - 如何使用 flex 布局在 mat-toolbar 内居中文本?
- codeigniter - 在我的项目文件夹名称之后,我的 codeigniter 项目没有访问 index.php
- linux - 如何使用 'Find' linux 命令来搜索 NetCDF 文件中的一些变量?
- kotlin - Kotlin 可以定义为强类型语言吗?