You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+65-62Lines changed: 65 additions & 62 deletions
Original file line number
Diff line number
Diff line change
@@ -2,29 +2,29 @@
2
2
3
3
# FULL STACK COURSE 2023
4
4
5
-
5
+
## React JS MasterClass
6
6
7
-
Hi, This is **CoderDost Youtube Channel**Full Stack Development Course [Course Link ](https://youtube.com/coderdost),
7
+
Hi, This is course page of **CoderDost Youtube Channel**React JS 2023 Course [Course Link ](https://youtu.be/6l8RWV8D-Yo),
8
8
9
-
### How to use this code :
9
+
### How to use this code :
10
10
11
-
You can **download code** in 2 ways :
11
+
#### You can **download code** in 2 ways :
12
12
13
13
1.**Git Commands**
14
14
15
-
- use `git clone <repository_url>`
15
+
- use `git clone <repository_url>`
16
16
17
-
- checkout branch according to Chapter number `git checkout react-1`
17
+
- checkout branch according to Chapter number `git checkout react-1`
18
18
19
-
- run `npm install` inside the root directory before running the code
19
+
- run `npm install` inside the root directory before running the code
20
20
21
21
22
22
23
23
2. If you are not comfortable with git, directly **download the branch as Zip**.
24
24
25
-
- Choose branch related to the Chapter e.g. `react-1`
25
+
- Choose branch related to the Chapter e.g. `react-1`
26
26
27
-
- run `npm install` inside the root directory before running the code
27
+
- run `npm install` inside the root directory before running the code
28
28
29
29
30
30
@@ -61,21 +61,21 @@ You can **download code** in 2 ways :
61
61
62
62
-**Assignment 1** : Create a simple React app for **RESUME Builder**. It will be static website. You have to make components like **Resume** as top level and under it - **Skills**, **Education**, **Experience** etc as components. All resume data will be under 1 big JavaScript object like which you can us in components via props. You can fix the number of items in **Skills**, **Education**, **Experience** or any section. Example you can say that only 3 experience items is allowed.
> You can choose any simple HTML layout and convert it to React Components
74
+
> You can choose any simple HTML layout and convert it to React Components
75
75
76
-
Example Link : [ Resume HTML ](https://codepen.io/emzarts/pen/OXzmym)
76
+
Example Link : [ Resume HTML ](https://codepen.io/emzarts/pen/OXzmym)
77
77
78
-
### Special Assignments ==============
78
+
### Special Assignments ==============
79
79
80
80
-**Assignment 2** : Create a Parent Component called **Border** which can provide some CSS border to any component nested into it. [Hint : You will need to use `children` props here
81
81
< Border>
@@ -93,28 +93,28 @@ You can **download code** in 2 ways :
93
93
94
94
95
95
-**Assignment 1** : Make a simple component which can conditionally render a list with **number** or **alphabets** or ***bullets*** in HTML for number. e..g. use a prop like `layout` for this. Also use a prop `items` for array of items in list.
96
-
```
96
+
```
97
97
< List layout="numbered" items={items}/>
98
98
< List layout="alpha" items={items}/>
99
99
< List layout="bullet" items={items}/>
100
-
```
100
+
```
101
101
102
102
-**Assignment 2** : This is continuation of previous assignment **RESUME Builder**
103
-
1. In this part you have to make some conditional rendering. Suppose if any section doesn't exist you have to remove that section from **Resume**. Example if `skills` is empty array than don't display `skills` section in Resume.
104
-
2. You have to use `map` in most places where there are arrays. Like **Skills**, **Education**, **Experience** if there are 3 entries, use `map` to display 3 experience items. You don't need fix number of items. Any array can have 1 to 10(or some Limit) any number of items. You can put some Limit, so that your layout is not affected.
105
-
3. Conditionally put some styling to **Resume**. Like `light` theme or `dark` theme or any other way you can switch the CSS layouts.
103
+
1. In this part you have to make some conditional rendering. Suppose if any section doesn't exist you have to remove that section from **Resume**. Example if `skills` is empty array than don't display `skills` section in Resume.
104
+
2. You have to use `map` in most places where there are arrays. Like **Skills**, **Education**, **Experience** if there are 3 entries, use `map` to display 3 experience items. You don't need fix number of items. Any array can have 1 to 10(or some Limit) any number of items. You can put some Limit, so that your layout is not affected.
105
+
3. Conditionally put some styling to **Resume**. Like `light` theme or `dark` theme or any other way you can switch the CSS layouts.
> You can choose any simple HTML layout and convert it to React Components
117
+
> You can choose any simple HTML layout and convert it to React Components
118
118
119
119
Example Link : [ Resume HTML ](https://codepen.io/emzarts/pen/OXzmym)
120
120
@@ -167,42 +167,42 @@ You can **download code** in 2 ways :
167
167
168
168
## Chapter 5 - State, useState Hooks
169
169
170
-
**Assignment 1** : Make a digital **CLOCK** Component using useEffect Hook. We need to only update the time Upto seconds in it. HH:MM:SS format can be used. Can you make it send a Console.log at end of every minute ?
170
+
-**Assignment 1** : Make a digital **CLOCK** Component using useEffect Hook. We need to only update the time Upto seconds in it. HH:MM:SS format can be used. Can you make it send a Console.log at end of every minute ?
171
171
172
-
**Assignment 2** : Implement a simple **TIMER** that displays the elapsed time since the start button was pressed, and it can be stopped and reset. Like a stopwatch.
172
+
-**Assignment 2** : Implement a simple **TIMER** that displays the elapsed time since the start button was pressed, and it can be stopped and reset. Like a stopwatch.
173
173
174
174
175
175
176
176
177
177
## Chapter 6 - Form , Synthetic Event Object & Lifting State up
178
178
179
179
180
-
**Assignment 1** : Create a Dropdown (< Select >) menu which is formed by a `nations` array. You can push to this array new items using a 2 **input textbox** (for country name and code) and **button**.
180
+
-**Assignment 1** : Create a Dropdown (< Select >) menu which is formed by a `nations` array. You can push to this array new items using a 2 **input textbox** (for country name and code) and **button**.
181
181
On selection of the any option from dropdown, its value should be displayed on console.log
182
-
```
183
-
const nations = [
182
+
```
183
+
const nations = [
184
184
{ name: 'India', value: 'IN' },
185
185
{ name: 'Pak', value: 'PK' },
186
186
{ name: 'Bangladesh', value: 'BG' },
187
-
]
188
-
```
187
+
]
188
+
```
189
189
190
190
191
191
-**Assignment 2** : **FILTERED LIST** : Make a **List** of something using an Array (a list can of cricket player /countries/ movie name etc). Now make this list it searchable, you have to put a **input textbox** at top of list. When you type in **textbox** it should only show you items matching from text typed. For example -
192
192
If you type only "in" it should show things like "India" / "China" as both have `in` in it.
193
193
-**Assignment 2.1** : **FILTERED LIST** : Make above **List** as separate components for List, Input form and pass the states from each other using concepts learnt till now.
194
194
195
195
196
-
**Assignment 3** :
196
+
-**Assignment 3** :
197
197
198
198
This is continuation of previous assignment **RESUME Builder**. Now you have to make a separate component **ResumeEditor** which has a **FORM**. This form will have many **input boxes**. Each one related to one section. For example you can have one input box or **experience** section. Another input box for **skill** section and like this. Every input box should have an **Add** button in front of it. Once you press this add button that information is stored in the state , which you can update at top of the App level. Now this state should update the **Resume** Component and its child you have built.
199
-
- first component will be your **RESUME** document which is only for reading purpose.
199
+
- first component will be your **RESUME** document which is only for reading purpose.
200
200
- second component will be this **FORM**
201
201
- you have to manage the state in between
202
202
- only Add functionality is required in this assignment
203
203
- you can change input boxes according to your need depending on your format of Resume. You can have multiple textboxes also for same section. Like for date + experience item etc.
204
204
205
-
**Assignment 4** : Try this challenge : https://beta.reactjs.org/learn/state-a-components-memory#challenges
205
+
-**Assignment 4** : Try this challenge : https://beta.reactjs.org/learn/state-a-components-memory#challenges
206
206
207
207
### Related Videos :
208
208
@@ -267,23 +267,21 @@ Todo app can be used to maintain a list of your pending daily items. A Simple to
267
267
268
268
## Chapter 7 - More State & useEffect hooks
269
269
270
-
**Assignment 1** : The method shown in this video was just to introduce **useEffect** hook. However that was not the correct use of useEffect hook. Can you change the code to remove useEffect and still have the editVideo functionality. [*Hint : use the concept that Component is rendered every time prop changes*]
270
+
-**Assignment 1** : The method shown in this video was just to introduce **useEffect** hook. However that was not the correct use of useEffect hook. Can you change the code to remove useEffect and still have the editVideo functionality. [*Hint : use the concept that Component is rendered every time prop changes*]
271
271
272
-
**Assignment 2** :
273
-
274
-
This is continuation of previous assignment **RESUME Builder**.
275
-
- Add functionality to **delete** the items from resume.
276
-
- Add functionality to **update** the items from resume.
277
-
- you have to manage the state in between
278
-
- you can change input boxes according to your need depending on your format of Resume. You can have multiple textboxes also for same section. Like for date + experience item etc.
279
-
- Check the output can be printed perfectly in PDF.
272
+
-**Assignment 2** : This is continuation of previous assignment **RESUME Builder**.
273
+
- Add functionality to **delete** the items from resume.
274
+
- Add functionality to **update** the items from resume.
275
+
- you have to manage the state in between
276
+
- you can change input boxes according to your need depending on your format of Resume. You can have multiple textboxes also for same section. Like for date + experience item etc.
277
+
- Check the output can be printed perfectly in PDF.
280
278
281
279
282
280
## Chapter 8 - useReducer
283
281
284
-
**Assignment 1** : Try this challenge : https://beta.reactjs.org/learn/extracting-state-logic-into-a-reducer#challenges
282
+
-**Assignment 1** : Try this challenge : https://beta.reactjs.org/learn/extracting-state-logic-into-a-reducer#challenges
285
283
286
-
**Assignment 2** : Convert your **RESUME BUILDER** Application from `useState` to `useReducer` by converting states logic to a common reducer. Your reducer can have as many switch cases as you want. You can also divide them based on sections. `ADD_SKILL`, `ADD_EXPERIENCE` etc. to make logic even simpler for developer.
284
+
-**Assignment 2** : Convert your **RESUME BUILDER** Application from `useState` to `useReducer` by converting states logic to a common reducer. Your reducer can have as many switch cases as you want. You can also divide them based on sections. `ADD_SKILL`, `ADD_EXPERIENCE` etc. to make logic even simpler for developer.
287
285
288
286
### Related Videos :
289
287
@@ -293,32 +291,32 @@ Todo app can be used to maintain a list of your pending daily items. A Simple to
**Assignment 2** : Add a Context to your **RESUME BUILDER** to change font-size, font-color and some other font-properties. Also add a form to changed these property at top of App.
297
+
-**Assignment 2** : Add a Context to your **RESUME BUILDER** to change font-size, font-color and some other font-properties. Also add a form to changed these property at top of App.
300
298
301
-
**Assignment 3** : Add a Context to your **RESUME BUILDER** to change Dark Mode and Light Mode. You can also use a `React Switch` kind of library to make it more user friendly to switch.
299
+
-**Assignment 3** : Add a Context to your **RESUME BUILDER** to change Dark Mode and Light Mode. You can also use a `React Switch` kind of library to make it more user friendly to switch.
302
300
303
301
304
302
## Chapter 10 - Context API with useReducer [Redux architecture]
305
303
306
304
### Special Assignments
307
305
308
-
**Assignment 1** : Make a **useCounter** Hook: To keep track of a number that can be incremented or decremented.
306
+
-**Assignment 1** : Make a **useCounter** Hook: To keep track of a number that can be incremented or decremented.
**Assignment 4** Use **JSON Placeholder API** (link given below).
345
-
- You have to create a button which can get some posts and show them in a List.
346
-
- You have to a **show comments** button on each list item. On click of show comments, Post's comments should be fetched below that list item. [ Comments are available for each post in API]
347
-
- When you click on a particular list item's show comments, it should expand and **show** comments, otherwise it should collapse and **hide** the comments.
348
-
- Try to optimize by :
344
+
-**Assignment 4** Use **JSON Placeholder API** (link given below).
345
+
- You have to create a button which can get some posts and show them in a List.
346
+
- You have to a **show comments** button on each list item. On click of show comments, Post's comments should be fetched below that list item. [ Comments are available for each post in API]
347
+
- When you click on a particular list item's show comments, it should expand and **show** comments, otherwise it should collapse and **hide** the comments.
348
+
- Try to optimize by :
349
349
350
350
- Only getting comments of required Post items (not all at a time)
351
351
- Storing somehow the old comments of closed list items. So you will not fetch them again, when your show comments again.
**Assignment 1** : Implement a component that displays a list of items. The component should memoize the list of items to prevent unnecessary re-rendering.
364
+
-**Assignment 1** : Implement a component that displays a list of items. The component should memoize the list of items to prevent unnecessary re-rendering.
365
+
366
+
-**Assignment 2**: How to use memoization in the **JSON Placeholder API** assignment in previous problem. Can you try to **optimize** it using **useMemo/useCallback** ?
367
+
368
+
-**Assignment 3**: **useMemo** and **useCallback** are same hook. useCallback is just a convenient hook way to write **useMemo** for functions. Prove this using **useMemo** in place of **useCallback** in any previous problem. *[ Hint : you will have to change the useMemo callback and return the function definition ]*
365
369
366
-
**Assignment 2**: How to use memoization in the **JSON Placeholder API** assignment in previous problem. Can you try to **optimize** it using **useMemo/useCallback** ?
367
370
368
371
369
372
## Chapter 14 - Advanced React - Part 1
370
373
371
374
372
-
**Assignment 1** :
375
+
-**Assignment 1** :
373
376
Try to apply `useDeferredValue` and `useTransistion` hooks on API based components. Either make a new one or use any existing code you have from other assignments. You can use `Chrome Network throttling` from **Devtools** > **Performance** Tabs and use **Slow 3G** option to see the effects
374
377
375
378
376
379
377
380
## Chapter 15 - Advanced React - Part 2
378
381
379
-
**Assignment 1** :
382
+
-**Assignment 1** :
380
383
Try to use `window.print` functionality as show in code without flushSync and see if really make a difference. Also, try the same on `alert` functionality, can it also work ?
0 commit comments