javascript - 无法使用对 setState 的反应挂钩从子组件打开反应引导模式
问题描述
我正在尝试从子组件内的按钮触发我在父组件中的 react-bootstrap 模式。为此,我将handleShow
函数作为道具传递给子组件,但这似乎不起作用。单击按钮时模式不会打开,并且浏览器控制台上没有错误。
父组件:
OnboardPage.jsx
import React from 'react'
import { Row, Form } from 'react-bootstrap'
import { PersonalDetails } from './personalDetails'
import { EmailVerification } from './emailVerification'
import { OnboardForm } from './form'
import { FAQs } from './faq'
import { LeftCol, RightCol, FormContainer } from './styles'
import './styles.css'
import { Modal, Button } from 'react-bootstrap'
const OnboardPage = props => {
const [show, setShow] = React.useState(false);
const handleClose = () => setShow(false);
const handleShow = () => setShow(true);
return (
<Row>
<LeftCol md={8}>
<PersonalDetails parentShowFn={handleShow}/>
<OnboardForm />
</LeftCol>
<RightCol md={4}>
<EmailVerification />
<FAQs />
</RightCol>
<Modal show={show} onHide={handleClose} className="editModal">
<FormContainer>
<Modal.Header className="editModalHeader">
<Modal.Title>Edit Personal Details</Modal.Title>
</Modal.Header>
<Modal.Body>
<Form>
<Form.Group controlId="formBasicName">
<Form.Control type="text" placeholder="Name" className="formInput"/>
</Form.Group>
<Form.Group controlId="formBasicEmail">
<Form.Control type="email" placeholder="Email ID" className="formInput"/>
</Form.Group>
<Form.Group controlId="formBasicPhoneNumber">
<Form.Control type="text" placeholder="Phone Number" className="formInput"/>
</Form.Group>
<Form.Group controlId="formBasicName">
<Form.Control type="text" placeholder="Country you will work in" className="formInput"/>
</Form.Group>
<Button variant="primary" type="submit" className="submitBtn">
Save details
</Button>
</Form>
</Modal.Body>
</FormContainer>
</Modal>
</Row>
)
}
export default OnboardPage
子组件:
PersonalDetails.jsx
import React from 'react'
import { colors } from '../../../../res'
import { TitleText, CommonText, SubHeadingText } from '../../../commons/freelancer/texts'
import { Container, TitleRow, DetailsRow, DetailsItem, EditBtn } from './personalDetailsStyles'
import { Modal, Button } from 'react-bootstrap'
// import EditDetailsModal from './EditDetailsModal'
const PersonalDetails = ({parentShowFn}) => {
return (
<Container>
<TitleRow>
<TitleText>Personal Details</TitleText>
<EditBtn onClick={() => parentShowFn()}>Edit</EditBtn>
</TitleRow>
</Container>
)
}
export default PersonalDetails
似乎无法追踪为什么这不起作用。
解决方案
对不起大家。在跳到这里问问题之前,我应该进行更多研究。原来样式化的组件<EditBtn>
缺少 {...props}。因此,它没有将 onClick 道具传递给点击侦听器。感谢您的回复。
推荐阅读
- ansible - 是否可以使用 Ansible playbook 遍历节点机器上的多个文件并搜索 n 替换特定行
- javascript - 为什么在 javascript 中使用 if(!!obj){} 而不是 if(obj){}
- python - 将复杂的分层 JSON 转换为 CSV
- ruby - 无法更新 Gemfile
- bash - 是否可以将变量从 BASH 脚本传递到 Linux 上的 PWSH
- html - flex-direction:行不工作;它仍然显示为一列
- linux - Perl 中的 Rsync system() 执行随机失败并出现协议错误
- git - Git 从具有历史记录的远程分支签出文件
- linux - 依次传递两个变量
- excel - 数组中的vba工作表名称但不显示