Skip to content

Commit 5842318

Browse files
committed
Fix laggy scroll on change pages
1 parent eb2593a commit 5842318

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

components/3d-sphere/render/init.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ let scene,
2020
renderAspectRatio
2121
const renderTickManager = new TickManager()
2222

23+
export const onResizeCallback = () => {
24+
camera.aspect = renderAspectRatio
25+
camera.updateProjectionMatrix()
26+
composer.setSize(renderWidth, renderHeight)
27+
}
2328
export const initEngine = async (sphereRef) => {
2429
scene = new Scene()
2530

@@ -37,7 +42,6 @@ export const initEngine = async (sphereRef) => {
3742
// shadow
3843
renderer.shadowMap.enabled = true
3944
renderer.shadowMap.type = PCFSoftShadowMap
40-
console.log(renderer.domElement)
4145
sphereRef.current.appendChild(renderer.domElement)
4246

4347
const target = new WebGLRenderTarget(renderWidth, renderHeight, {
@@ -53,14 +57,10 @@ export const initEngine = async (sphereRef) => {
5357
controls.enableZoom = false
5458
controls.enablePan = false
5559

60+
5661
window.addEventListener(
5762
'resize',
58-
() => {
59-
camera.aspect = renderAspectRatio
60-
camera.updateProjectionMatrix()
61-
composer.setSize(renderWidth, renderHeight)
62-
},
63-
false
63+
onResizeCallback
6464
)
6565

6666
renderTickManager.startLoop()

components/Header/index.tsx

+5-4
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ export default function Header({selectedSection, setSelectedSection}: HeaderInt)
5353
itemTitle={btnTitle}
5454
routeName={routesList.home}
5555
>
56-
<Link
56+
<a
57+
rel='preload'
5758
onClick={ () => setSelectedSection(btnTitle)}
58-
href={`${routesList.home}#${btnTitle}`} scroll={false} className="sectionButton">{ btnTitle }</Link>
59+
href={`${routesList.home}#${btnTitle}`} className="sectionButton">{ btnTitle }</a>
5960
</HeaderBtnLi>
6061
))
6162

@@ -64,12 +65,12 @@ export default function Header({selectedSection, setSelectedSection}: HeaderInt)
6465
<HeaderWrapper isShowHeader={isShow} className='items-center p-4 sm:p-6 fixed top-0 left-0 w-full z-50'>
6566
<div className='container mx-auto flex justify-between items-center'>
6667
<div className='mr-auto font-bold'>
67-
<Link className='text-xl sm:text-base' scroll={false} href={`/#${baseHomeSection}`} >SCASS</Link>
68+
<a rel='preload' className='text-xl sm:text-base' href={`/#${baseHomeSection}`} >SCASS</a>
6869
</div>
6970

7071
<ul className="sectionWrapper hidden md:flex justify-around">
7172
<HeaderBtnLi routeName={routesList.roadmap} currentroute={router.pathname}>
72-
<Link href={routesList.roadmap}>{ routesTitle.roadmap }</Link>
73+
<a rel='preload' href={routesList.roadmap}>{ routesTitle.roadmap }</a>
7374
</HeaderBtnLi>
7475

7576
{ buttonItem }

components/roadmap/SphereInfo.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { medias, roadmapData } from '../../utilities/statics'
66
import RoadmapItem from './RoadmapItem'
77
import { RoadmapSection, SphereContainer } from './style'
88
import { initSphere } from '../3d-sphere/index.js';
9+
import { onResizeCallback } from '../3d-sphere/render/init'
910

1011
export interface SphereRectInt {
1112
top:number,
@@ -18,7 +19,6 @@ export default function SphereInfo() {
1819
const isLoadedSphere = useRef(false);
1920
const [sphereRect, setSphereRect] = useState<SphereRectInt>()
2021
const [bodyRect, setBodyRect ] = useState<DOMRect>()
21-
2222
useEffect( () => {
2323
setBodyRect(document.body.getBoundingClientRect())
2424
}, [])
@@ -35,6 +35,10 @@ export default function SphereInfo() {
3535
if (isLoadedSphere.current) return;
3636
isLoadedSphere.current = true
3737
initSphere(sphereRef)
38+
39+
return () => {
40+
window.removeEventListener('resize', onResizeCallback)
41+
}
3842
}, [])
3943

4044
const renderedDescriptions = roadmapData.map((data, index) => {

0 commit comments

Comments
 (0)