Я хотел бы сделать эффект параллакса в реакции.
Я нашел учебник на среде , в котором объясняется, как.
Мой код написан в функциональном компоненте , но в примере это компонент класса.
Вот пример
class Header extends React.Component {
constructor() {
super()
this.state = {
offset: 0
};
}
return (
<header
className='header-background'
style={{ backgroundPositionY: this.state.offset}}
>
<section
className='info-container'
style={{ bottom: this.state.offset / 2 }}
>
<h1>Kevin Simpson</h1>
<h3>Front End Developer</h3>
</section>
</header>
)
}
componentDidMount() {
window.addEventListener('scroll', this.parallaxShift);
}
componentWillUnmount() {
window.removeEventListener('scroll', this.parallaxShift);
}
parallaxShift = () => {
this.setState({
offset: window.pageYOffset
});
};
Я преобразовал его в функциональный с моими знаниями
const [offset, setOffset] = useState(0);
useEffect(() => {
window.addEventListener('scroll', setOffset(window.pageYOffset));
});
return (
...
<svg style={{ bottom: offset }} className="border-circle" width={107} height={107} viewBox="0 0 107 107" >
....
На самом деле нет setOffset
срабатывает при прокрутке, слушатель событий не вызывает события.