react-scroll-parallax <ParallaxProvider />到div

时间:2019-08-06 00:44:56

标签: javascript html css reactjs parallax

我正在尝试使用以下模块在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.

1 个答案:

答案 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>

如果我错了,我将删除答案。