【发布时间】:2018-08-13 15:22:12
【问题描述】:
错误代码(也在下方): https://codesandbox.io/s/4xklz52xkx
单选按钮在单击后应该会被选中,但不会。这仅出现在 NavItem 中。删除 NavItem div 使单选按钮再次起作用:https://codesandbox.io/s/5x60q3440l
可能与此react bootstrap issue 相关,该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在内部是一个<a>,对吧? -
对,
<li>和<a>。<li role="presentation" class=""><a role="button" href="#">...</a></li> -
当
<a>元素上的点击事件被触发时,您是否尝试过 preventDefault() 方法(如 GitHub 问题中所述)? -
我做到了。但是删除
preventDefault()对他们的情况有所帮助。但它最初并没有在这里使用。
标签: javascript reactjs react-bootstrap