React改變元素樣式的操作代碼
三元運算符
在React中,通過點擊事件來改變元素的樣式:
- 在元素上設置
onClick
屬性。 - 當元素被點擊時,設置激活的
state
。 - 使用三元運算符,基于
state
變量有條件地設置新樣式。
import {useState} from 'react'; export default function App() { const [isActive, setIsActive] = useState(false); const handleClick = () => { // ?? toggle setIsActive(current => !current); // ?? or set to true // setIsActive(true); }; return ( <div> <button style={{ backgroundColor: isActive ? 'salmon' : '', color: isActive ? 'white' : '', }} onClick={handleClick} > Click </button> </div> ); }
我們在元素上設置了onClick
屬性,所以每當元素被點擊時,handleClick
函數(shù)就會被調用。在該函數(shù)中,我們只是切換isActive
狀態(tài)。
如果你不想在每次點擊元素時改變樣式,你可以將狀態(tài)設置為激活,例如
setIsActive(true)
。
我們使用三元運算符,有條件地在元素上設置backgroundColor
樣式。
<button style={{ backgroundColor: isActive ? 'salmon' : '', color: isActive ? 'white' : '', }} onClick={handleClick} > Click </button>
三元運算符與if/else
語句十分相似。換句話說,如果isActive
變量值為true
,我們會設置backgroundColor
屬性為salmon
,否則設置為空字符串。
你可以用這種方法來改變組件中任何元素的樣式,它不一定是用戶點擊的那個。
currentTarget
同樣的,你可以使用event
對象上的currentTarget
屬性。
- 在元素上設置
onClick
屬性。 - 在事件處理函數(shù)中,通過
event.currentTarget
訪問元素。 - 在元素上使用
style
對象設置樣式。
export default function App() { const handleClick = event => { event.currentTarget.style.backgroundColor = 'salmon'; event.currentTarget.style.color = 'white'; event.currentTarget.classList.add('my-class-1', 'my-class-2'); }; return ( <div> <button onClick={handleClick}>Click</button> </div> ); }
我們可以通過event
對象上的currentTarget
屬性來訪問元素。event
上的currentTarget
屬性讓我們可以訪問事件監(jiān)聽器所連接的元素。
下面的示例向我們展示了,如何通過點擊事件改變元素上的樣式。
export default function App() { const handleClick = event => { // ?? toggle styles on click if (event.currentTarget.style.backgroundColor) { event.currentTarget.style.backgroundColor = null; event.currentTarget.style.color = null; } else { event.currentTarget.style.backgroundColor = 'salmon'; event.currentTarget.style.color = 'white'; } // ?? toggle class on click event.currentTarget.classList.toggle('my-class-1', 'my-class-2'); }; 發(fā)。 return ( <div> <button onClick={handleClick}>Click</button> </div> ); }
如果你需要在點擊時為元素設置一個樣式,你可以直接通過元素的style
對象設置樣式。
event.currentTarget.style.backgroundColor = 'salmon';
然而,如果你必須在每次點擊元素時切換樣式,你就必須有條件地檢查該類是否存在,如果存在就將其刪除,否則就添加該類。
如果你需要為元素添加樣式,可以使用classList.add
方法。
// ?? add class event.currentTarget.classList.add('my-class-1', 'my-class-2'); // ?? remove class event.currentTarget.classList.remove('my-class-1', 'my-class-2');
該方法可以可以傳遞一個或多個class
。
如果你需要在點擊時為元素切換樣式,可以使用classList.toggle
方法。
event.currentTarget.classList.toggle('my-class-1', 'my-class-2');
classList.toggle
方法從元素中移除一個現(xiàn)有的類,如果該類存在的話。否則,它會將該類添加到該元素中。
到此這篇關于React技巧之改變元素樣式的文章就介紹到這了,更多相關react改變元素樣式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
react?hooks?計數(shù)器實現(xiàn)代碼
這篇文章主要介紹了react?hooks計數(shù)器實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08react-router中Link標簽和a標簽有什么區(qū)別
本文主要介紹了react-router中Link標簽和a標簽有什么區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-06-06