javascript - 单选按钮不会更新 NavItem 中的 UI

标签 javascript reactjs react-bootstrap

有缺陷的代码(也在下面): https://codesandbox.io/s/4xklz52xkx

单选按钮应在单击后变为选中状态,但事实并非如此。这出现在NavItem中。删除 NavItem div 会使单选按钮再次工作:https://codesandbox.io/s/5x60q3440l

可能与此相关react bootstrap issue ,这个问题一直没有得到解决。该问题的 SO 帖子是 here 。我已经测试了答案中的解决方法,但也没有运气。

import React from "react";
import { render } from "react-dom";
import { Nav, NavItem, Radio } from "react-bootstrap";
import { BrowserRouter as Router } from "react-router-dom";

class Menu extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      selected: "one"
    };
  }

  handleChange = e => {
    this.setState({ selected: e.target.value });
    console.log(this.state);
  };

  render() {
    return (
      <div>
        <Nav bsStyle="tabs">
          <NavItem>
            <Radio
              name="radioGroup"
              checked={this.state.selected === "one"}
              value="one"
              onChange={this.handleChange}
            >
              one
            </Radio>
            <Radio
              name="radioGroup"
              checked={this.state.selected === "two"}
              value="two"
              onChange={this.handleChange}
            >
              two
            </Radio>
          </NavItem>
        </Nav>
      </div>
    );
  }
}

const App = () => (
  <Router>
    <Menu />
  </Router>
);

render(<App />, document.getElementById("root"));

最佳答案

出于某种原因,向 NavItem 添加一个非空的 href 可以使其正常工作。如果将 NavItem 更改为

<NavItem href = '#!'>

效果很好。只要将 href 留空或使用 # 作为 href,就不起作用。我将 href 命名为 #! 假设您不会使用 ! 命名任何 html 元素 !!

我认为this code snippet在 React Bootstrap 中是问题所在。但我并不完全确定。我会找到根本原因并更新答案。

关于javascript - 单选按钮不会更新 NavItem 中的 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51825659/

相关文章:

javascript - React-Bootstrap Modal 表单入口

javascript - React JSX 在元素周围呈现双引号

javascript - 如何检查文本框是否为空?

javascript - Uncaught ReferenceError ,通知未定义

javascript - jquery中如何获取节点元素的索引

Reactjs - 在 api 调用失败时注销/重定向用户

javascript - 警告 : validateDOMNesting(. ..):使用 React-bootstrap <div> 无法显示为 <tr> 的子元素

javascript - 在悬停时更改 ul 下内容的字体颜色

javascript - 如何使用 jQuery .slideUp() 使 float 按钮出现在 Angular 落?

javascript - react js : Can´t send first object in array as prop