0
我正在尝试更改组件的状态并将其呈现给页面。使用OnClick在React中更改组件的状态
var navbarValue = [{"Category":"Home","Status":1},{"Category":"About","Status":0},{"Category":"Contact","Status":0}];
\t
\t
class NavbarList extends React.Component {
constructor() {
super();
this.onClick = this.handleClick.bind(this);
}
handleClick(event) {
const {id} = event.target;
console.log(id);
\t if(!navbarValue[id].Status){
\t {navbarValue.map((obj, index) =>{
\t \t \t if(navbarValue[index].Status){
navbarValue[index].Status = 0;
\t \t \t \t return <li key={index}><a id={index} onClick={this.onClick}>{obj.Category} </a></li>
\t \t \t }
\t \t })}
navbarValue[id].Status = 1;
\t \t return <li className="active" key={id}><a id={id} onClick={this.onClick}>{navbarValue[id].Category}</a></li>
\t }
}
\t render() {
\t \t return (
\t <div className="navbar-wrapper">
\t <div className="container">
\t <nav className="navbar navbar-fixed-static-top navbar-inverse">
\t <div className="container">
\t <div className="navbar-header">
\t <button type="button" className="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span className="sr-only">Toggle navigation</span>
\t \t <span className="icon-bar"></span>
\t \t <span className="icon-bar"></span>
\t \t <span className="icon-bar"></span>
\t </button>
\t <a className="navbar-brand" href="#">BrandName</a>
\t </div>
\t <div id="navbar" className="collapse navbar-collapse">
\t \t <ul className="nav navbar-nav">
\t \t {navbarValue.map((obj, index) => {
\t \t \t if (obj.Status)
\t \t \t return <li className="active" key={index}><a id={index} onClick={this.onClick}>{obj.Category}</a></li>
\t \t return <li key={index}><a id={index} onClick={this.onClick}>{obj.Category} </a></li>
})}
</ul>
\t </div>
\t </div>
\t </nav>
\t </div>
\t </div>
\t)};
};
ReactDOM.render(
<NavbarList />,
document.getElementById('root')
);
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
我有handleClick(event)
if语句这验证,如果函数必须运行并重新呈现的元素。
首先它检查是否已被激活的按钮没有被点击。接下来,如果statment处于循环中以查找以前的活动元素,请将objects属性更改为0并呈现为不活动。
在最后呈现新有源元件,以便活性和对象的集合属性为1
而你的问题是......? – Pineda
如何更改组件,重新渲染为新值。 – AESTHETICS