【问题标题】:Radio button doesn't refresh instantly when I click on it当我单击单选按钮时,它不会立即刷新
【发布时间】:2020-07-28 07:57:16
【问题描述】:

我的项目的单选按钮有问题。选中的收音机基于变量 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>
      </>
    );
  }



提前致谢!

【问题讨论】:

    标签: javascript reactjs react-bootstrap radio


    【解决方案1】:

    我刚刚在沙盒上复制了您的确切代码。

    我在useState函数中没有看到任何错误,错误似乎在JSX中,最后你没有任何标签组件的结束标记。

    这是更新后的代码

    <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元素,因为包我已经把它去掉了。

    【讨论】:

    • 很高兴我能帮助你,请为此目的使用 linter,他们会让你在编辑器中修复这些错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2019-05-04
    • 2013-06-10
    相关资源
    最近更新 更多