当我点击它时,单选按钮不会立即刷新

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 元素,因为包的原因我已经删除了它。