我正在尝试使用以下模块在div上使用react-scroll-parallax:https://www.npmjs.com/package/react-scroll-parallax
我试图将视差提供程序设置为不仅指向主体,而且指向特定的div。我正在尝试引用元素(这是scrollContainer)。
面临的挑战是我在页脚和页眉之间使用了“滚动div”,因此在上进行视差将不起作用。
我试图创建一个引用并在没有成功的情况下引用它。
文档说要引用一个元素作为ScrollContainer的选项: scrollContainer元素:(可选)设置发生溢出并包含视差元素的容器。默认为HTML正文
constructor(props) {
super(props);
this.myScrollDiv = React.createRef();
}
/////////////////
<ParallaxProvider scrollContainer={this.myScrollDiv.current}>
<div className="page-scroller site-wrapper pb-5" ref={this.myScrollDiv}>
///Content
</div>
</ParallaxProvider>
I would love for the .page-scroller div to handle parallax.
答案 0 :(得分:0)
免责声明:我从未使用过 react-scroll-parallax 库。答案是基于源代码的。
欢迎来到堆栈溢出,@ stephanesng?
在查看源代码时,我发现了一个故事书code snippet。
似乎您需要传递ref
变量本身,而不是ref.current
。
export default class ScrollContainer extends React.Component {
static defaultProps = {
scrollAxis: 'vertical',
};
constructor() {
super();
this.state = {
scrollContainer: null,
};
this.scrollContainer = React.createRef();
}
componentDidMount() {
this.setState({ scrollContainer: this.scrollContainer.current });
}
render() {
return (
// ............ You pass the `ref` not `ref.current` ?
<div className="scroll-container" ref={this.scrollContainer}>
<ParallaxProvider
scrollContainer={this.state.scrollContainer}
scrollAxis={this.props.scrollAxis}
>
{this.props.children}
</ParallaxProvider>
</div>
);
}
}
因此,您需要将this.myScrollDiv
而不是this.myScrollDiv.current
传递给scrollContainer
道具。
而且,您的ref
必须位于ParallaxProvider
之外。
<div className="page-scroller site-wrapper pb-5" ref={this.myScrollDiv}>
<ParallaxProvider scrollContainer={this.myScrollDiv}>
///Content
</ParallaxProvider>
</div>
如果我错了,我将删除答案。