react-lazyload首屏加载后,再滑动就不加载了,都是loding,有用过的能指点下吗

发布于 2022-09-07 22:58:15 字数 2963 浏览 16 评论 0

我几乎把案例拿过来了,还是不行,求指点下,各位

import React from "react";
import LazyLoad from 'react-lazyload';
import Lazyloading from '../Lazyloading/index';
import Placeholder from '../Lazyloading/Placeholder';

class Griddoubt extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
        };
    };
    render() {
        const data = this.props.data;
        //[{once: false, id: "http://39.107.0.png", count: 1},]
        return (
            <div>
                {data.map((el, index) => {
                    return (
                        <LazyLoad
                            once={el.once}
                            key={index}
                            height={200}
                            offset={[100, 0]}
                            placeholder={<Placeholder />} //loading
                            debounce={500}
                        >
                            <Lazyloading once={el.once} id={el.icon} count={index + 1} />
                        </LazyLoad>
                    );
                })}
            </div>
        );
    }
}

export default Griddoubt;


import React from "react";

class Lazyloading extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            isReady: true,
            count: 1,
        };
    };

    componentWillReceiveProps(nextProps) {
        if (nextProps.id !== this.props.id && this.props.id) {
            this.setState({
                isReady: false
            });

            setTimeout(() => {
                this.setState({
                    isReady: true,
                    count: this.state.count + 1
                });
            }, 500);
        } else {
            this.setState({
                isReady: true
            });
        }
    }

    render() {
        console.log(this.props);//首屏渲染后,再滑动就执行不到这了
        return this.state.isReady ? (
            <div className="" style={{ height: '234PX', width: '50%', float: 'left', background: 'rgb(133, 138, 223)', textAlign: 'center', }}>
                {this.props.once ? (
                    <div >
                        加载失败
                    </div>
                ) : (
                        <div >
                            加载成功
                        </div>
                    )}
            </div>
        ) : (
                <div >
                    loading...
                </div>
            );
    }
}

export default Lazyloading;

import React from 'react';

export default function Placeholder() {
    return (
        <div style={{ height: '234PX', width: '50%', float: 'left', background: 'rgb(229, 142, 196)', textAlign: 'center' }}>
            <img src="http://39.107./1.png"
                style={{ width: '50% ' }}
            />
        </div>
    );
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青春有你 2022-09-14 22:58:15

你好 解决了吗 我也碰到了这个问题

尐籹人 2022-09-14 22:58:15

局部滚动好像是一直有问题 你这是局部滚动吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文