当我点击它时,单选按钮不会立即刷新
Radio button doesn't refresh instantly when I click on it
我的项目的单选按钮有问题。检查的收音机基于变量 users.gender。当我对我的 users.gender 执行 console.log 时,我可以看到当我点击男性或女性时,值正在改变,但选中的收音机没有改变,我不知道为什么。我在网上读过,有些人说这是因为 preventDefault 但我没有。这是我的代码的一部分:
import React, { useState } from 'react';
import {Modal, Button, Form, Row, Col, Tab, Tabs} from 'react-bootstrap';
import * as Icon from 'react-bootstrap-icons';
export default function Modalregisterlogin(props) {
const [show, setShow] = useState(false);
const handleClose = () => setShow(false);
const handleShow = () => setShow(true);
const [users, setUsers] = useState({
gender: "",
});
const display = e => {
console.log(users.gender);
};
return (
<>
<Button variant="primary" onClick={handleShow}>
{props.page}
</Button>
<Modal show={show} onHide={handleClose} size="lg">
<Modal.Body className="modalcontent" >
<Icon.X size={30} className="modalclose" onClick={handleClose}/>
<Tabs defaultActiveKey={props.tab} id="test">
<Tab eventKey="register" title="INSCRIPTION">
<Form >
<Form.Group as={Row} >
<Form.Label column md="3">Genre: {users.gender}</Form.Label>
<Col md="9">
<Form.Check
name="gender"
value="male"
inline
checked={users.gender === "male"}
label="Male"
type='radio'
onChange={e => setUsers({ gender : 'male'})}/>
<Form.Check
name="gender"
value="female"
inline
checked={users.gender === "female"}
label="Female"
type='radio'
onChange={e => setUsers({ gender : 'female'})}/>
</Col>
</Form.Group>
</Form>
<Button variant="primary" type="submit" onClick={display}>
Show gender value
</Button>
</Tab>
<Tab eventKey="login" title="CONNEXION">
<Button variant="primary" type="submit" onClick={handleClose}>
Se connecter
</Button>
</Tab>
</Modal.Body>
</Modal>
</>
);
}
提前致谢!
我刚刚在沙盒上复制了您的确切代码。
我在 useState 函数中没有看到任何错误,错误似乎在 JSX 中,你最终没有为 Tabs 组件添加任何结束标记。
这是更新后的代码
<React.Fragment>
<Button variant="primary" onClick={handleShow}>
{props.page}
</Button>
<Modal show={show} onHide={handleClose} size="lg">
<Modal.Body className="modalcontent">
<Tabs defaultActiveKey={props.tab} id="test">
<Tab eventKey="register" title="INSCRIPTION">
<Form>
<Form.Group as={Row}>
<Form.Label column md="3">
Genre: {users.gender}
</Form.Label>
<Col md="9">
<Form.Check
name="gender"
value="male"
inline
checked={users.gender === "male"}
label="Male"
type="radio"
onChange={e => setUsers({ gender: "male" })}
/>
<Form.Check
name="gender"
value="female"
inline
checked={users.gender === "female"}
label="Female"
type="radio"
onChange={e => setUsers({ gender: "female" })}
/>
</Col>
</Form.Group>
</Form>
<Button variant="primary" type="submit" onClick={display}>
Show gender value
</Button>
</Tab>
<Tab eventKey="login" title="CONNEXION">
<Button variant="primary" type="submit" onClick={handleClose}>
Se connecter
</Button>
</Tab>
</Tabs>
</Modal.Body>
</Modal>
</React.Fragment>
您可以参考这个沙箱 link 来检查正确的行为。忽略我代码中的 icons 元素,因为包的原因我已经删除了它。
我的项目的单选按钮有问题。检查的收音机基于变量 users.gender。当我对我的 users.gender 执行 console.log 时,我可以看到当我点击男性或女性时,值正在改变,但选中的收音机没有改变,我不知道为什么。我在网上读过,有些人说这是因为 preventDefault 但我没有。这是我的代码的一部分:
import React, { useState } from 'react';
import {Modal, Button, Form, Row, Col, Tab, Tabs} from 'react-bootstrap';
import * as Icon from 'react-bootstrap-icons';
export default function Modalregisterlogin(props) {
const [show, setShow] = useState(false);
const handleClose = () => setShow(false);
const handleShow = () => setShow(true);
const [users, setUsers] = useState({
gender: "",
});
const display = e => {
console.log(users.gender);
};
return (
<>
<Button variant="primary" onClick={handleShow}>
{props.page}
</Button>
<Modal show={show} onHide={handleClose} size="lg">
<Modal.Body className="modalcontent" >
<Icon.X size={30} className="modalclose" onClick={handleClose}/>
<Tabs defaultActiveKey={props.tab} id="test">
<Tab eventKey="register" title="INSCRIPTION">
<Form >
<Form.Group as={Row} >
<Form.Label column md="3">Genre: {users.gender}</Form.Label>
<Col md="9">
<Form.Check
name="gender"
value="male"
inline
checked={users.gender === "male"}
label="Male"
type='radio'
onChange={e => setUsers({ gender : 'male'})}/>
<Form.Check
name="gender"
value="female"
inline
checked={users.gender === "female"}
label="Female"
type='radio'
onChange={e => setUsers({ gender : 'female'})}/>
</Col>
</Form.Group>
</Form>
<Button variant="primary" type="submit" onClick={display}>
Show gender value
</Button>
</Tab>
<Tab eventKey="login" title="CONNEXION">
<Button variant="primary" type="submit" onClick={handleClose}>
Se connecter
</Button>
</Tab>
</Modal.Body>
</Modal>
</>
);
}
提前致谢!
我刚刚在沙盒上复制了您的确切代码。
我在 useState 函数中没有看到任何错误,错误似乎在 JSX 中,你最终没有为 Tabs 组件添加任何结束标记。
这是更新后的代码
<React.Fragment>
<Button variant="primary" onClick={handleShow}>
{props.page}
</Button>
<Modal show={show} onHide={handleClose} size="lg">
<Modal.Body className="modalcontent">
<Tabs defaultActiveKey={props.tab} id="test">
<Tab eventKey="register" title="INSCRIPTION">
<Form>
<Form.Group as={Row}>
<Form.Label column md="3">
Genre: {users.gender}
</Form.Label>
<Col md="9">
<Form.Check
name="gender"
value="male"
inline
checked={users.gender === "male"}
label="Male"
type="radio"
onChange={e => setUsers({ gender: "male" })}
/>
<Form.Check
name="gender"
value="female"
inline
checked={users.gender === "female"}
label="Female"
type="radio"
onChange={e => setUsers({ gender: "female" })}
/>
</Col>
</Form.Group>
</Form>
<Button variant="primary" type="submit" onClick={display}>
Show gender value
</Button>
</Tab>
<Tab eventKey="login" title="CONNEXION">
<Button variant="primary" type="submit" onClick={handleClose}>
Se connecter
</Button>
</Tab>
</Tabs>
</Modal.Body>
</Modal>
</React.Fragment>
您可以参考这个沙箱 link 来检查正确的行为。忽略我代码中的 icons 元素,因为包的原因我已经删除了它。