Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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
Javascript 反应切换类_Javascript_Html_Css_Reactjs_Toggle - Fatal编程技术网

Javascript 反应切换类

Javascript 反应切换类,javascript,html,css,reactjs,toggle,Javascript,Html,Css,Reactjs,Toggle,我想切换类只点击元素。但现在,当我点击任何人时,他们都处于活动状态。当我单击一个标记时,我想向card div添加另一个类。我应该如何更新代码 handleClick() { const currentState = this.state.active; this.setState({ active: !currentState }); } handleClick() { const currentState = this.state

我想切换类只点击元素。但现在,当我点击任何人时,他们都处于活动状态。当我单击一个标记时,我想向card div添加另一个类。我应该如何更新代码

 handleClick() {
        const currentState = this.state.active;
        this.setState({ active: !currentState });
    }
 handleClick() {
        const currentState = this.state.active;
        this.setState({ active: !currentState });
    }

组件
this.searchSpace(e)}/>
{items}

您仅使用一个变量(活动)跟踪状态,但需要分别跟踪每个状态。试试这个:

更新为处理切换:


组件
this.searchSpace(e)}/>
{items}

您应该使用多个状态变量,并使用函数更新状态,因此当您将购物车图标设置为活动状态时,列表图标状态不会改变。 请参见下面的示例。如果有帮助,请告诉我

class MyComp extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      cartIconActive: false,
      listIconActive: false,
    };
    this.handleCartIconClick = this.handleCartIconClick.bind(this);
    this.handleListIconClick = this.handleListIconClick.bind(this);
  }

  handleCartIconClick() {
    this.setState((prevState) => ({
      ...prevState,
      cartIconActive: !prevState.cartIconActive,
    }));
  }

  handleListIconClick() {
    this.setState((prevState) => ({
      ...prevState,
      listIconActive: !prevState.listIconActive,
    }));
  }

  render() {
    const { cartIconActive, listIconActive } = this.state;
    return (
      <div className="container">
        <div>
          <h1>Components</h1>
          <div>
            <a
              href="#"
              onClick={this.handleCartIconClick}
              className={cartIconActive ? 'card-icon active' : 'card-icon'}
            >
              click
            </a>
            <a
              href="#"
              onClick={this.handleListIconClick}
              className={listIconActive ? 'list-icon active' : 'list-icon'}
            >
              click
            </a>
          </div>
        </div>
        <input
          type="text"
          placeholder=""
          className="input"
          onChange={(e) => this.searchSpace(e)}
        />
        <div className="card">{items}</div>
      </div>
    );
  }
}


类MyComp扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
cartIconActive:false,
listIconActive:false,
};
this.handleCartIconClick=this.handleCartIconClick.bind(this);
this.handleListIconClick=this.handleListIconClick.bind(this);
}
HandleParticonClick(){
this.setState((prevState)=>({
…国家,
cartIconActive:!prevState.cartIconActive,
}));
}
handleListIconClick(){
this.setState((prevState)=>({
…国家,
listIconActive:!prevState.listIconActive,
}));
}
render(){
const{cartIconActive,listIconActive}=this.state;
返回(
组件
this.searchSpace(e)}
/>
{items}
);
}
}

谢谢!没关系,但我无法正确解释。当我单击的元素处于活动状态时,另一个元素不应处于活动状态。因此您希望将其切换而不是同时处于活动状态?是的,同时该类应将卡片更改为列表谢谢!这几乎发生了,但当我单击两个时,一个标记处于活动状态:(是否添加了!for!this.state.active?“列表图标处于活动状态”?
<div className="container">
   <div>
     <h1>Components</h1>
     <div>
        <a href="#" onClick={this.handleClick.bind(this)} className= {this.state.active ? "card-icon active" : "card-icon"}>click</a>
        <a href="#" onClick={this.handleClick.bind(this)} className= {!this.state.active ? "list-icon active" : "list-icon"}>click</a>
     </div>
   </div>
   <input type="text" placeholder="" className="input" onChange={(e)=>this.searchSpace(e)}  />
   <div className={this.state.active ? "card" : "list"}>
     {items}
   </div>
</div>
class MyComp extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      cartIconActive: false,
      listIconActive: false,
    };
    this.handleCartIconClick = this.handleCartIconClick.bind(this);
    this.handleListIconClick = this.handleListIconClick.bind(this);
  }

  handleCartIconClick() {
    this.setState((prevState) => ({
      ...prevState,
      cartIconActive: !prevState.cartIconActive,
    }));
  }

  handleListIconClick() {
    this.setState((prevState) => ({
      ...prevState,
      listIconActive: !prevState.listIconActive,
    }));
  }

  render() {
    const { cartIconActive, listIconActive } = this.state;
    return (
      <div className="container">
        <div>
          <h1>Components</h1>
          <div>
            <a
              href="#"
              onClick={this.handleCartIconClick}
              className={cartIconActive ? 'card-icon active' : 'card-icon'}
            >
              click
            </a>
            <a
              href="#"
              onClick={this.handleListIconClick}
              className={listIconActive ? 'list-icon active' : 'list-icon'}
            >
              click
            </a>
          </div>
        </div>
        <input
          type="text"
          placeholder=""
          className="input"
          onChange={(e) => this.searchSpace(e)}
        />
        <div className="card">{items}</div>
      </div>
    );
  }
}