如何在 React 组件挂载上添加 class?
How to add a class on React component mount?
我的 React 应用有一个基础 div 像这样:
<body>
<div id="root">
....
</div>
</body>
在我的欢迎容器中,我想添加一个 class 到 div w id="root 然后在欢迎容器卸载,删除 class.
class Welcome extends React.Component {
componentDidMount() {
console.log('componentDidMount');
console.log($('#root'));
}
....
使用 jQuery 我可以做类似
的事情
$('#root').addClass('myClass')
....
$('#root').removeClass('myClass')
在通过 ID 找到 div 后,在 React 中添加和删除 class 的等价物是什么?
这毫无意义。您不应该将 classes 添加到 React 组件的 root 中。根 div 应该只存在以将 React 注入到使用 ReactDOM 中。
不是修改 html 根,而是创建一个名为 App
的反应 class 或其他东西,并渲染一个包装所有组件的 <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>
);
}
}
如果您想从子组件(例如 Welcome
修改 appClass
,它在您的应用程序中更靠下,那么您将需要使用 Redux 或 Flux 等状态管理来修改class来自子组件的名称,否则它会很快变得混乱。
编辑:从 this.state 对象中删除了分号
我的 React 应用有一个基础 div 像这样:
<body>
<div id="root">
....
</div>
</body>
在我的欢迎容器中,我想添加一个 class 到 div w id="root 然后在欢迎容器卸载,删除 class.
class Welcome extends React.Component {
componentDidMount() {
console.log('componentDidMount');
console.log($('#root'));
}
....
使用 jQuery 我可以做类似
的事情$('#root').addClass('myClass')
....
$('#root').removeClass('myClass')
在通过 ID 找到 div 后,在 React 中添加和删除 class 的等价物是什么?
这毫无意义。您不应该将 classes 添加到 React 组件的 root 中。根 div 应该只存在以将 React 注入到使用 ReactDOM 中。
不是修改 html 根,而是创建一个名为 App
的反应 class 或其他东西,并渲染一个包装所有组件的 <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>
);
}
}
如果您想从子组件(例如 Welcome
修改 appClass
,它在您的应用程序中更靠下,那么您将需要使用 Redux 或 Flux 等状态管理来修改class来自子组件的名称,否则它会很快变得混乱。
编辑:从 this.state 对象中删除了分号