![](/img/trans.png)
[英]In React, how do I change the classname of one element that was created in an iteration, onclick of another element?
[英]How to change className to element after click on another element in React
單擊“ icon-caret-down”后,我必須在第一個div上更改(添加)className。 我的代碼不起作用。 你能給我一些提示嗎?
export default class Nav extends React.Component { render() { var btnClass = classNames({ 'nav-conteiner': true, 'nav-conteiner-mob': this.state.isPressed }); return ( <div classNames={btnClass}> <span className='icon-soundcloud'></span> <h6 id="site-name">SoundCloud</h6> <span className="icon-caret-down" onClick={this.openSerch.bind(this)}></span> <ul> <li><a href='#'>Explore</a></li> <li><a href='#'>Playlist</a></li> </ul> <Search/> </div> ); } openSerch(){ console.log('hello'); this.setState({isPressed:true}); } }
我猜主要的錯誤是您沒有宣布初始狀態。
接下來,您對包裝器使用了錯誤的屬性“ classNames”而不是“ className”。
我已更正錯誤,請檢查一下:
export default class Nav extends React.Component {
constructor (props) {
super(props);
this.state = {
isPressed: false
}
}
render () {
var btnClass = classNames({
'nav-conteiner': true,
'nav-conteiner-mob': this.state.isPressed
});
return (
<div className={btnClass}>
<span className='icon-soundcloud'></span>
<h6 id="site-name">SoundCloud</h6>
<span className="icon-caret-down" onClick={this.openSerch.bind(this)}></span>
<ul>
<li><a href='#'>Explore</a></li>
<li><a href='#'>Playlist</a></li>
</ul>
<Search/>
</div>
);
}
openSerch () {
this.setState({ isPressed: true });
}
}
export default class Nav extends React.Component { constructor (props) { super(props); this.state = { isPressed: false } } render() { var btnClass = classNames({ 'nav-conteiner': true, 'nav-conteiner-mob': this.state.isPressed }); return ( <div classNames={this.state.isPressed ? btnActiveClass :btnClass }> <span className='icon-soundcloud'></span> <h6 id="site-name">SoundCloud</h6> <span className="icon-caret-down" onClick={this.openSerch.bind(this)}></span> <ul> <li><a href='#'>Explore</a></li> <li><a href='#'>Playlist</a></li> </ul> <Search/> </div> ); } openSerch(){ console.log('hello'); this.setState({isPressed:true}); } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.