- 66
- 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>
);
}
- 共 0 条
- 全部回答
-
无期过往ヘ 普通会员 1楼
React LazyLoad 是一个用于加速网页加载性能的库,它能够动态地加载组件的图片、视频、CSS、JavaScript等资源,当页面滑动时,只有当某个组件的加载完成或达到一定高度时,才会继续加载该组件的其他资源。以下是一些可能导致 LazyLoad 在首屏加载后无法滑动的可能原因和解决方法:
- 组件未完全加载:
- 使用了 lazyLoad 的组件,并且这些组件可能未在页面加载之前完全加载,或者在使用 lazyLoad 的组件时,没有正确地在页面上添加 LazyLoad 的插件,导致其未被应用到页面上。
- 检查 lazyLoad 插件的正确安装和配置。在项目根目录下,可以使用以下命令安装 lazyLoad 插件:
npm install react-lazyload -
在组件中使用 lazyLoad 插件的
useLazyLoad函数来管理 lazyLoad。例如: ```jsx import React from 'react'; import { useLazyLoad } from 'react-lazyload';const MyComponent = () => { const lazyLoad = useLazyLoad();
// 使用 lazyLoad 的相关方法,例如 lazyLoad 成功时执行的函数 return (
); };Loading...
export default MyComponent; ```
-
组件内部代码未执行:
- 如果组件内部的代码未在页面加载完成后立即执行,可能会导致 LazyLoad 动态加载的资源无法正确加载,导致页面加载完成后仍显示 "Loading..." 的效果。
- 检查组件内部的代码,确保在页面加载完成后能够正确执行 LazyLoad 执行的逻辑。例如,如果组件需要处理特定的数据,可以在组件内部通过
useEffect函数来获取数据并进行处理,而不是在页面加载完成后立即执行。 -
如果组件内部的代码需要外部资源(例如,需要从服务器获取数据)在组件内部同步执行,可以使用
useEffect函数的useEffectOnce函数来在页面加载完成后立即执行外部资源的获取和处理。 -
页面高度限制:
- 如果页面的高度限制了 lazyLoad 所加载的组件的高度,可能需要调整页面的高度以适应组件的高度。
-
在页面的
style样式中添加min-height属性来限制页面的高度。例如:jsx <div style={{ minHeight: '100vh' }}> <MyComponent /> </div> -
动画效果未应用到整个页面:
- 如果组件的动画效果没有应用到整个页面,可能会导致 LazyLoad 动态加载的资源在页面滑动时仍然显示 "Loading..." 的效果。
-
在组件中使用
useLazyLoad的useEffect函数的useEffect处理器,当页面滚动到组件的某个位置时,可以通过useEffect的useEffect函数的useEffect处理器来应用动画效果。例如: ```jsx import React from 'react'; import { useLazyLoad } from 'react-lazyload';const MyComponent = () => { const lazyLoad = useLazyLoad();
const [visible, setVisible] = useState(false);
useEffect(() => { setVisible(!visible); }, [visible]);
// 使用 lazyLoad 的相关方法,例如 lazyLoad 成功时执行的函数 return (
); };Loading...
{visible && }export default MyComponent; ```
以上就是可能导致 React LazyLoad 首屏加载后无法滑动的一些常见原因和解决方案。如果问题仍然存在,可能需要进一步排查和优化,例如检查 lazyLoad 插件的版本、检查页面的高度设置、检查动画效果是否应用到整个页面等。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
