[英]How to change className based on state and re render it in a functional component
[英]How to add className to component based on state without removing initial className
我有一个可切换的组件:
class HamburgerMenu extends React.Component {
constructor(props){
super(props)
this.state = {
toggle: false,
}
}
Toggle() {
this.setState((currentState) => ({
toggle: !currentState.toggle
}));
}
render() {
return (
<StyledHamburgerMenu className="HamburgerMenu" onClick={ () => this.Toggle() }>
<FontAwesomeIcon icon="bars" />
</StyledHamburgerMenu>
)
}
}
我想将 class 名称添加到单独文件中的div
( extended-right-bar
)jsx 元素:
function App() {
return (
<div className="App">
<div className="grid-display">
<div className="right-bar">
<HamburgerMenu />
<PlusButton />
</div>
<div className="extended-right-bar">
<h1 className="main-title">Notes</h1>
<div className="folders-section">
<h2>Folders</h2>
<Folder name="folder" />
<Folder name="folder" />
<Folder name="folder" />
<Folder name="folder" />
</div>
<div className="tags-section">
<h2>Tags</h2>
<Label name="buisness" />
<Label name="buisness" />
<Label name="buisness" />
</div>
</div>
<div className="main">
<NoteWindow />
</div>
</div>
</div>
);
}
我怎样才能做到这一点? 它们相互导入和导出
您可以使用
element.classList.add("className");
添加 class 而不覆盖现有的。
相应地替换元素和类名
您可以使用redux
在切换时将classValue
传递给不同的组件。
const Component = (props) => {
const className = props.classValue ? "extended-right-bar " + props.classValue : "extended-right-bar";
return (
<div className={customProps.className}>
<h1 className="main-title">Notes</h1>
<div className="folders-section">
<h2>Folders</h2>
<Folder name="folder" />
<Folder name="folder" />
<Folder name="folder" />
<Folder name="folder" />
</div>
</div>;
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.