Skip to content

Commit d8ab8f6

Browse files
authored
Merge pull request #21 from udaypydi/fix/lazy-load-components
Fix/lazy load components
2 parents 759bbef + bf2c921 commit d8ab8f6

File tree

5 files changed

+40
-5
lines changed

5 files changed

+40
-5
lines changed

config/paths.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ const path = require('path');
33
const paths = {
44
entry: path.resolve(__dirname, '../index'),
55
output: path.resolve(__dirname, '../build'),
6-
template: path.resolve(__dirname, './template.html')
6+
template: path.resolve(__dirname, './template.html'),
7+
uielements: path.resolve(__dirname, '../src/uielements'),
78
};
89

910

config/webpack.base.config.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ module.exports = function({ plugins }) {
5353
}),
5454
],
5555
resolve: {
56-
extensions: ['.js', 'jsx', '.scss', '.css']
56+
extensions: ['.js', '.jsx', '.scss', '.css'],
57+
alias: {
58+
uielements: paths.uielements,
59+
}
5760
},
5861
});
5962
}

index.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import React from 'react';
1+
import React, { Suspense } from 'react';
22
import ReactDOM from 'react-dom';
3-
import App from './src/app.jsx';
3+
import Loader from 'uielements/loader/loader.component';
4+
const App = React.lazy(() => import('./src/app'));
45

5-
ReactDOM.render(<App />, document.getElementById('root'));
6+
ReactDOM.render(<Suspense fallback={<Loader />}><App /></Suspense>, document.getElementById('root'));
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import React from 'react';
2+
import './loader.scss';
3+
4+
export default function Loader() {
5+
return (
6+
<div className="Loader--Container">
7+
<div className="Loader--Element" />
8+
</div>
9+
);
10+
}

src/uielements/loader/loader.scss

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
.Loader--Container {
2+
display: flex;
3+
justify-content: center;
4+
align-items: center;
5+
height: 100vh;
6+
7+
.Loader--Element {
8+
border: 16px solid #f3f3f3; /* Light grey */
9+
border-top: 16px solid #3498db; /* Blue */
10+
border-radius: 50%;
11+
width: 30px;
12+
height: 30px;
13+
animation: spin 2s linear infinite;
14+
}
15+
}
16+
17+
@keyframes spin {
18+
0% { transform: rotate(0deg); }
19+
100% { transform: rotate(360deg); }
20+
}

0 commit comments

Comments
 (0)