[英]react. How to change icon src by onClick or onPress?
I wanna campaigns_icon change to campaigns_icon_selected when I click. 我想在点击时将campaigns_icon更改为campaigns_icon_selected。 Then if I click search_icon_pic, it will be the search_icon_pic_selected and campaigns_icon_selected changed to campaigns_icon
然后,如果我单击search_icon_pic,它将被search_icon_pic_selected并campaigns_icon_selected更改为campaigns_icon
Here is part of my code:
import campaigns_icon from '../../image/sidebar/campaigns white.png';
import campaigns_icon_selected from '../../image/sidebar/campaigns white.png';
import search_icon_pic from '../../image/sidebar/search white.png';
import search_icon_pic_selected from '../../image/sidebar/search white.png';
return (
<Sider
trigger={null}
collapsible={true}
collapsed={collapsed}
className="isomorphicSidebar"
>
<Link to={`${url}/status_board`}>
<img alt="" src={campaigns_icon} />
</Link>
<Link to={`${url}/search_result`}>
<img alt="" src={search_icon_pic}/>
</Link>
</Sider>
);
For simple, I think you can create 2 state properties then toggle the image over it. 为简单起见,我认为您可以创建2个状态属性,然后在其上切换图像。 And also, you will need 2 method to change it, for example:
而且,您将需要2种方法来更改它,例如:
constructor(props){
super(props);
this.state = {
campaigns: false,
search: false
}
}
handleChangeCampaign(){
this.setState({campaigns:!this.state.campaigns})
}
handleChangeSearch(){
this.setState({search:!this.state.search})
}
Then in your render method you can set it: 然后可以在您的渲染方法中进行设置:
return (
<Sider
trigger={null}
collapsible={true}
collapsed={collapsed}
className="isomorphicSidebar"
>
<Link to={`${url}/status_board`} onClick={this.handleChangeCampaign.bind(this)}>
<img alt="" src={this.state.campaigns? campaigns_icon_selected: campaigns_icon}/>
</Link>
<Link to={`${url}/search_result`} onClick={this.handleChangeSearch.bind(this)}>
<img alt="" src={this.state.search? search_icon_pic_selected: search_icon_pic}/>
</Link>
</Sider>
);
import campaigns_icon from '../../image/sidebar/campaigns white.png';
import campaigns_icon_selected from '../../image/sidebar/campaigns white.png';
import search_icon_pic from '../../image/sidebar/search white.png';
import search_icon_pic_selected from '../../image/sidebar/search white.png';
class MyCls extends React.Component {
constructor(props) {
super(props);
this.state = {
campaignsIconClicked: false,
searchIconClicked: false
};
}
render() {
return (
<Sider
trigger={null}
collapsible={true}
collapsed={collapsed}
className="isomorphicSidebar"
>
<Link to={`${url}/status_board`}>
<img onClick={() => this.setState({campaignsIconClicked: true}) } alt="" src={this.state.campaignsIconClicked ? campaigns_icon_selected : campaigns_icon} />
</Link>
<Link to={`${url}/search_result`}>
<img onClick={() => this.setState({searchIconClicked: true}) } alt="" src={this.state.searchIconClicked ? search_icon_pic_selected : search_icon_pic}/>
</Link>
</Sider>
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.