最佳答案
我在React中构建了一个组件,它应该在窗口滚动上更新自己的风格,以创建视差效果。
组件render
方法看起来像这样:
function() {
let style = { transform: 'translateY(0px)' };
window.addEventListener('scroll', (event) => {
let scrollTop = event.srcElement.body.scrollTop,
itemTranslate = Math.min(0, scrollTop/3 - 60);
style.transform = 'translateY(' + itemTranslate + 'px)');
});
return (
<div style={style}></div>
);
}
这是行不通的,因为React不知道组件已经更改,因此组件不会重新呈现。
我已经尝试在组件的状态中存储itemTranslate
的值,并在滚动回调中调用setState
。然而,这使得滚动无法使用,因为它非常慢。
有什么建议吗?