[英]Ternary operator not working with inline styles with React [Hooks]
[英]How do I apply my React styles inline with a ternary operator?
我目前正在嘗試為我的響應式網站添加側邊導航欄滑入和滑出功能。 我正在關注這里的第一個動畫示例。
我能夠首先使用document.getElementById("mySidenav").style.width = "250px";
. 但是,我不希望使用document
操作 DOM。 我想使用本地狀態並更新它。 我正在使用 JavaScript 內聯樣式。 以下是一些代碼的工作方式:
openNavbar = () => {
document.getElementById("mySidenav").style.width = "0";
};
<div style={styles.navbarMobile} onClick={this.openNavbar}>
<NavSidebar/>
</div>
navbarMobile: {
height: '100vh',
width: '100%',
position: 'fixed',
zIndex: 11,
top: '0',
left: '-100%',
overflowX: 'hidden',
overflowY: 'hidden',
transition: '1s',
paddingRight: '15px',
display: 'none',
'@media (max-width: 992px)': {
display: 'block',
backgroundColor: 'white'
}
}
現在顯然我這樣做與示例略有不同。 我不是操縱寬度,而是操縱左側位置。 它工作並且運行順利。 但是,我現在正在嘗試實現一些本地狀態並根據本地狀態值更改 CSS。 這是我所擁有的:
this.state = {
navOpen: false
}
openNavbar = () => {
this.setState({navOpen: true});
};
<div style={this.state.navOpen ? {left: 0} : {left: -100%}, styles.navbarMobile} onClick={this.openNavbar}>
<NavSidebar/>
</div>
navbarMobile: {
height: '100vh',
width: '100%',
position: 'fixed',
zIndex: 11,
top: '0',
left: '-100%',
overflowX: 'hidden',
overflowY: 'hidden',
transition: '1s',
paddingRight: '15px',
display: 'none',
'@media (max-width: 992px)': {
display: 'block',
backgroundColor: 'white'
}
}
主要重點是如何傳遞三元,同時添加其他內聯樣式。 通過執行我上面的操作, navbarMobile
所有 css navbarMobile
得到應用。 但是,三元永遠不會運行。 如果我刪除styles.navbarMobile
則三元工作。 有沒有辦法讓我可以同時運行這兩個? 關於我應該如何處理這個問題的任何例子或想法?
如果你使用 React Hooks,你現在可以更容易地做到這一點。
<li style={{ textDecoration: isDone ? "line-through" : "none" }}>
{props.text}
</li>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.