Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React JS Toogle类_Reactjs_Toggle - Fatal编程技术网

Reactjs React JS Toogle类

Reactjs React JS Toogle类,reactjs,toggle,Reactjs,Toggle,我有一个与React JS一起开发的项目。问题是我有一个按钮,当我点击它时,我只想改变我点击的按钮上的图标。但是我点击的所有按钮上的图标都改变了。我的代码如下 constructor(props){ super(props) this.state={ icon: false } } active = (event) => { this.setState({icon: !this.state.icon}) } ..... const menu =

我有一个与React JS一起开发的项目。问题是我有一个按钮,当我点击它时,我只想改变我点击的按钮上的图标。但是我点击的所有按钮上的图标都改变了。我的代码如下

constructor(props){
super(props)
this.state={
    icon: false
}
}

active = (event) => {
    this.setState({icon: !this.state.icon})           
}

.....

const menu = ['A','B','C','A','B','C','A','B','C']
<div className="nav_menu">
<ul>
    {menu.map((item,index) => 
        <li key = {index}>
            <Link data-id = {index} className="inactive" to={`${match.url}`} onClick={this.active}>
                <span>
                    <span>
                        <FontAwesomeIcon icon={faHome} className="icon"/>
                    </span>
                    {item}
                </span>
                <FontAwesomeIcon data-id = {index} icon={icon ? faAngleDown:faAngleRight} className="angle"/>
            </Link>
        </li>
    )}
</ul>
构造函数(道具){
超级(道具)
这个州={
图标:false
}
}
活动=(事件)=>{
this.setState({icon:!this.state.icon})
}
.....
常量菜单=['A'、'B'、'C'、'A'、'B'、'C'、'A'、'B'、'C']
    {menu.map((项目,索引)=>
  • {item}
  • )}


如何解决此问题?

示例如何选择特定的。现场演示

导出默认类Abc扩展组件{
建造师(道具){
超级(道具);
this.state={icon:false};
}
活动=项目=>{
this.setState({icon:item});
};
render(){
常量菜单=[“A”、“B”、“C”、“A”、“B”、“C”、“A”、“B”、“C”、“A”、“B”、“C”];
返回(
    {menu.map((项目,索引)=>(
  • this.active(index)} style={{color:this.state.icon==索引?“红色”:“}” > {item}
  • ))}
); } }
只有一个变量是不够的,因为您没有存储已单击的按钮索引以仅准确显示该按钮上的图标

constructor(props){
super(props)
this.state={
    icon: false,
    clickedIndex: -1,
}
}

active = (clickedIndex)=> (event) => {
    this.setState(prevState => ({icon: !prevState.icon, clickedIndex }));          
}

.....

const menu = ['A','B','C','A','B','C','A','B','C']
<div className="nav_menu">
<ul>
    {menu.map((item,index) => 
        <li key = {index}>
            <Link data-id = {index} className="inactive" to={`${match.url}`} onClick={this.active(index)}>
                <span>
                    <span>
                        <FontAwesomeIcon icon={faHome} className="icon"/>
                    </span>
                    {item}
                </span>
                <FontAwesomeIcon data-id = {index} icon={(icon && index === this.state.clickedIndex) ? faAngleDown:faAngleRight} className="angle"/>
            </Link>
        </li>
    )}
</ul>
构造函数(道具){
超级(道具)
这个州={
图标:false,
单击索引:-1,
}
}
活动=(单击索引)=>(事件)=>{
this.setState(prevState=>({icon:!prevState.icon,clickedIndex}));
}
.....
常量菜单=['A'、'B'、'C'、'A'、'B'、'C'、'A'、'B'、'C']
    {menu.map((项目,索引)=>
  • {item}
  • )}

同样,当我单击列表中的任何链接时,所有链接上的图标都会改变
constructor(props){
super(props)
this.state={
    icon: false,
    clickedIndex: -1,
}
}

active = (clickedIndex)=> (event) => {
    this.setState(prevState => ({icon: !prevState.icon, clickedIndex }));          
}

.....

const menu = ['A','B','C','A','B','C','A','B','C']
<div className="nav_menu">
<ul>
    {menu.map((item,index) => 
        <li key = {index}>
            <Link data-id = {index} className="inactive" to={`${match.url}`} onClick={this.active(index)}>
                <span>
                    <span>
                        <FontAwesomeIcon icon={faHome} className="icon"/>
                    </span>
                    {item}
                </span>
                <FontAwesomeIcon data-id = {index} icon={(icon && index === this.state.clickedIndex) ? faAngleDown:faAngleRight} className="angle"/>
            </Link>
        </li>
    )}
</ul>