Javascript ReactJs onClick添加类名

Javascript ReactJs onClick添加类名,javascript,reactjs,onclick,classname,Javascript,Reactjs,Onclick,Classname,我是新手 所以我有个问题。触发onClick事件时,我的类名不会更新。问题可能出在哪里 import React from "react"; import ReactDOM from "react-dom"; export default class Categorie extends React.Component { constructor() { super(); this.state = {categorie: "oldClass"}; } addClassName(

我是新手

所以我有个问题。触发onClick事件时,我的类名不会更新。问题可能出在哪里

import React from "react";
import ReactDOM from "react-dom";

export default class Categorie extends React.Component {
constructor() {
    super();
    this.state = {categorie: "oldClass"};
}

addClassName() {
    this.setState = ({categorie: "newClass"});
    console.log(this.state.categorie);
}

render() {
    return(
        <div className={this.state.categorie} onClick={this.addClassName.bind(this)}>
            <div className="categorieImgBlock">
               <img className="categorieImg" src={this.props.img}/>
            </div>
            <span className="categorieName">{this.props.name}</span>
            <span className="categorieCount">( {this.props.count} )</span>
        </div>
    );
}
}
从“React”导入React;
从“react dom”导入react dom;
导出默认类类别扩展React.Component{
构造函数(){
超级();
this.state={categorie:“oldClass”};
}
addClassName(){
this.setState=({categorie:“newClass”});
console.log(this.state.categorie);
}
render(){
返回(
{this.props.name}
({this.props.count})
);
}
}

您正在分配给
setState
。应该是函数调用

addClassName() {
    this.setState({categorie: "newClass"}); // NB!
    console.log(this.state.categorie);
}

您正在分配给
setState
。应该是函数调用

addClassName() {
    this.setState({categorie: "newClass"}); // NB!
    console.log(this.state.categorie);
}

似乎是个小错误:

this.setState = ({categorie: "newClass"});
应该是:

this.setState({categorie: "newClass"});
另外,
setState()
是异步的,因此您的
console.log
语句在它之后可能不会显示实际的新状态,如果您真的想在设置新状态后执行某些操作,您应该给它一个回调函数作为第二个参数

this.setState({categorie: "newClass"}, () => console.log(this.state.categorie));

似乎是个小错误:

this.setState = ({categorie: "newClass"});
应该是:

this.setState({categorie: "newClass"});
另外,
setState()
是异步的,因此您的
console.log
语句在它之后可能不会显示实际的新状态,如果您真的想在设置新状态后执行某些操作,您应该给它一个回调函数作为第二个参数

this.setState({categorie: "newClass"}, () => console.log(this.state.categorie));

this.setState
是一个为您设置状态的函数,以便react可以采取适当的步骤来处理更新。您需要用一个新对象调用
this.setState
,它会将对象映射到您当前的状态(控制台日志可能也无法工作,因为
setState
是一个异步函数)


this.setState
是一个为您设置状态的函数,以便react可以采取适当的步骤来处理更新。您需要用一个新对象调用
this.setState
,它会将对象映射到您当前的状态(控制台日志可能也无法工作,因为
setState
是一个异步函数)


非常感谢。工作很好:)谢谢!作品很棒:)