css 如何改变风格只是一个元素,点击MapReact?

ulydmbyx  于 2022-12-15  发布在  React
关注(0)|答案(1)|浏览(127)

我只想在点击图片时缩放Map中的一个元素。我读到过我必须使用索引,但我不知道怎么做。我也看到过如何在内联“onclick”中通过传递索引来做这件事。但我想用单独的函数来做这件事。
下面是代码:

import './App.css';
import { useSelector, useDispatch } from 'react-redux';


import { useEffect, useState } from 'react';
import { birds, mountains,trees, search } from './features/slices/photoSlice';


function App() {
  const url = useSelector((state)=>state.url)
  const dispatch = useDispatch()

  const [photos, setPhoto] = useState('')
  const [scale, setScale] = useState(false)
  const [photoindex, setPhotoindex] = useState(0)

  useEffect(()=>{
    fetch(url).then(res=>res.json()).then(data=>setPhoto(data))
  },[url])

const handleSearch = (e) =>{
 
 if(e.key==='Enter'){
  e.preventDefault()
  dispatch(search(e.target.value))
 }
  
}
const handleClickOnPicture = (e) => {
  if(e){
    setScale(!scale)
  }
}
  return (
    <div className="App">
// Problem is here below:
       {photos?photos.hits.map((photo, index)=>{
        return <img className={scale?'m-5 h-80 scale-125':'m-5 h-80'} onClick={handleClickOnPicture} key={photo.webformatURL} src={photo.webformatURL}/>
       }):""}
      
      </div>
      </div>
    </div>
  );
}

export default App;

我删除了一半的代码,因此您将只看到问题所在。

z9zf31ra

z9zf31ra1#

使用event.target.classname添加/删除类

const handleClickOnPicture = (e) => {
  if(!e.target.classList.contains('scale-125')){
    e.target.classList.add('scale-125') 
  }
  else{
    e.target.classList.remove('scale-125') 
  }
  

}

 <img className='m-5 h-80' onClick={handleClickOnPicture} key={photo.webformatURL} src={photo.webformatURL}/>

相关问题