Итак, у меня есть компонент, для которого я хотел бы изменить стиль на основе значения window.pageYOffset
. Когда пользователь прокручивает значение X вниз, я хотел бы изменить цвет фона, хотя это не должно ограничиваться только цветом фона, так как я также могу изменить другие свойства, такие как font-size
, color
, padding
и т. Д.
Вот то, что у меня сейчас есть.
const AppHeader: React.FC = () => {
const [scrollY, setScrollY] = React.useState('')
function handleScroll() {
if (window.pageYOffset > 1) {
// Be able to change styling properties based on true / false.
}
}
React.useEffect(() => {
window.addEventListener('scroll', handleScroll)
return () => {
window.removeEventListener('scroll', handleScroll)
}
}, [])
return (
<Header>
<h1>Header!</h1>
</Header>
)
}
const Header = styled.header`
// Somehow change the backgound color if window.pageYOffset is greater than value.
background: ${({color}) => color ? "red" : "blue"};
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 99;
`
Вот CodeSandBox , вилки оценены! :)