Как изменить цвет значков в react после onClick

#javascript #css #reactjs #material-ui

Вопрос:

 export default function Post({post}) {

   const [like,setLike] = useState(post.like)
   const [islike,setIslike] = useState(false)

   const handler=()=>{
       setLike(islike? like-1:like 1 )
       setIslike(!islike)
       
   }
    return (
        <>
        <div className="postcontainer">
           <div className='postwrapper'>
               
          
            <div className="postTop">
                <div className="topleft">
                    <img className="images" src= {Users.filter((u)=> u.id === post.userId)[0].imagesProfile} alt="profile" />
                    <span className="names"> {Users.filter((u)=> u.id === post.userId)[0].userName} </span>
                    <span className="dates"> {post.date}</span>
                    
                </div>
                <div className="topzRight">
                <MoreVert />
                </div>
                
            </div>
            <div className="postcenter">
                
               <span className='text'>{post.descrip}</span>
               <img className="imagepost" src={post.imagesPost} alt="newpost" />

            </div>
            <div className="postbotton">
                <div className="postbottonLeft">
                <LocationOnIcon     className="icon" />
                <FavoriteIcon   className="icon" onClick={handler}/>
               
                <span className='counter' > {like} People liked it</span>
                </div>
                <div className="postbottonRight">
                <span>{post.comment} comments</span>
                <SmsOutlined className="iconcomment" />
                </div>
                
            </div>
            </div> 
        </div>
        </>
    )
 

Ответ №1:

Во-первых, вам следует попытаться подробнее рассказать о том, что вы хотите сделать в коде, вместо того, чтобы просто указывать вопрос в заголовке и указывать код в качестве основного текста.

Во-вторых, если вы хотите, чтобы какой-либо HTML-элемент имел другой цвет в зависимости от того, нажали вы на него или нет, вы можете создать класс CSS для каждого состояния, которое вы хотите, чтобы один класс мог быть, .isLiked а другой .isNotLiked -каждый из них имел другой цвет. Затем в вашем коде вы можете указать условие для className атрибута HTML-элемента, чтобы решить, каким он должен быть на основе условия.

Напр.: className={isLiked ? 'isLiked' : 'isNotLiked'}

Комментарии:

1. танки для этого @JPerez01