简体   繁体   English

反应。 如何通过onClick或onPress更改图标src?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM