如何在 React 组件挂载上添加类?

AnA*_*ice -1 javascript reactjs

我的 React 应用程序有一个基本 div,如下所示:

<body>
    <div id="root">
        ....
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

在我的欢迎容器中,我想向 div w id="root 添加一个类,然后在欢迎容器卸载时删除该类。

class Welcome extends React.Component {

  componentDidMount() {
    console.log('componentDidMount');
    console.log($('#root'));
  }
  ....
Run Code Online (Sandbox Code Playgroud)

使用 jQuery 我可以做类似的事情

$('#root').addClass('myClass')
....
$('#root').removeClass('myClass')
Run Code Online (Sandbox Code Playgroud)

在 React 中通过 ID 找到类后添加和删除 div 上的类相当于什么?

Mar*_*son 6

这毫无意义。您不应该从 React 组件向 root 添加类。根 div 应该只是存在以使用 ReactDOM 注入 React。

不要修改 html 根,而是创建一个名为App或 的 React 类,然后渲染一个<div className="app" />包装所有组件的类。然后,您可以使用 React state 或 props 来修改 className。

class App extends React.Component {
    constructor() {
        super();

        this.state = {
            appClass: 'myClass'
        };
    }

    componentDidMount() {
        this.setState({ appClass: 'newClass' });
    }

    render() {
        return (
            <div className={this.state.appClass}>
                // Render children here
            </div>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您想appClass从子组件(例如Welcome应用程序中更靠下的子组件)修改 className,那么您将需要使用 Redux 或 Flux 之类的状态管理来修改子组件的 className,否则很快就会变得混乱。

编辑:从 this.state 对象中删除了分号