diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 443effd..f656a6a 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -23,34 +23,6 @@ "title": "Dashboard" } }, - { - "id": "29fe6103d2a1b311", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "2 Personal/Lists/Packlisten/Packliste - Skitour.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "Packliste - Skitour" - } - }, - { - "id": "b61acafdb7bde436", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "0 Journal/0 Daily/2025-05-01.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "2025-05-01" - } - }, { "id": "b5d9cec23d736cf3", "type": "leaf", @@ -78,9 +50,23 @@ "icon": "lucide-file", "title": "Status Quo OneSec" } + }, + { + "id": "fb9714bcef14ff37", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "2 Personal/1 Skills/IT/React Learnings.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "React Learnings" + } } ], - "currentTab": 2 + "currentTab": 3 } ], "direction": "vertical" @@ -112,7 +98,7 @@ "state": { "type": "search", "state": { - "query": "", + "query": "linsen", "matchingCase": false, "explainSearch": false, "collapseAll": false, @@ -327,16 +313,20 @@ "periodic-notes:Open today": false } }, - "active": "b61acafdb7bde436", + "active": "fb9714bcef14ff37", "lastOpenFiles": [ + "Dashboard.md", + "2 Personal/1 Skills/IT/React Learnings.md", + "2 Personal/1 Skills/IT", + "2 Personal/Lists/Packlisten/Packliste - Skitour.md", + "2 Personal/Wohnen/Rezepte/Markdownload/Püree von roten Linsen mit Cherrytomaten-Gemüse.md", + "0 Journal/0 Daily/2025-05-01.md", "0 Journal/0 Daily/2025-05-13.sync-conflict-20250513-182543-6QX3SGA.md", "0 Journal/0 Daily/2025-05-13.md", "99 Work/0 OneSec/OneSecThoughts/Status Quo OneSec.md", "5 Media/0 Books/The Black Prism by Brent Weeks.md", - "0 Journal/0 Daily/2025-05-01.md", "0 Journal/0 Daily/2025-04-28.md", "0 Journal/0 Daily/2025-03-26.md", - "2 Personal/Lists/Packlisten/Packliste - Skitour.md", "Sync", "Shared_Folder", "OneNote/BSM", @@ -346,7 +336,6 @@ "5 Media/5 Other", "5 Media/3 Films", "3 Knowledge/4 Politics", - "0 Journal/4 Yearly", "2 Personal/Lists/Packlisten/Packliste - Skihochtour.md", "2 Personal/Lists/Packlisten/Packliste - Berge Mehrtages.md", "2 Personal/Hobbies/Berge/Gletscherkurs/Gletscherkurs - Selbstudie.md", @@ -362,9 +351,6 @@ "0 Journal/0 Daily/2025-04-08.md", "Temporary/Untitled 4.md", "Excalidraw/Drawing 2025-04-08 11.44.11.excalidraw.md", - "2 Personal/Hobbies/Berge/Gletscherkurs/Gletscherkurs 2024.md", - "2 Personal/Home Lab/Repairshop/Data Recovery from corrupted Harddisks.md", - "0 Journal/0 Daily/2025-04-02.md", "Attachments/Pasted image 20250402091926.png", "Attachments/Pasted image 20250331151348.png", "Attachments/IMG_5894.jpeg", diff --git a/.obsidian_iphone/plugins/obsidian-spaced-repetition/data.json b/.obsidian_iphone/plugins/obsidian-spaced-repetition/data.json index 38b707d..be090bb 100644 --- a/.obsidian_iphone/plugins/obsidian-spaced-repetition/data.json +++ b/.obsidian_iphone/plugins/obsidian-spaced-repetition/data.json @@ -47,7 +47,7 @@ "maxLinkFactor": 1, "showDebugMessages": false }, - "buryDate": "2025-05-13", + "buryDate": "2025-05-16", "buryList": [], "historyDeck": null } \ No newline at end of file diff --git a/.obsidian_iphone/workspace-mobile.json b/.obsidian_iphone/workspace-mobile.json index 0833630..27a8e2d 100644 --- a/.obsidian_iphone/workspace-mobile.json +++ b/.obsidian_iphone/workspace-mobile.json @@ -69,12 +69,12 @@ "state": { "type": "markdown", "state": { - "file": "0 Journal/0 Daily/2025-05-13.md", + "file": "2 Personal/Wohnen/Rezepte/Markdownload/Püree von roten Linsen mit Cherrytomaten-Gemüse.md", "mode": "source", "source": true }, "icon": "lucide-file", - "title": "2025-05-13" + "title": "Püree von roten Linsen mit Cherrytomaten-Gemüse" } }, { @@ -1251,6 +1251,26 @@ { "id": "16616930c1927dd4", "type": "leaf", + "state": { + "type": "review-queue-list-view", + "state": {}, + "icon": "lucide-file", + "title": "Plugin no longer active" + } + }, + { + "id": "b76b774dc445f44a", + "type": "leaf", + "state": { + "type": "review-queue-list-view", + "state": {}, + "icon": "lucide-file", + "title": "Plugin no longer active" + } + }, + { + "id": "567d74707cb7125a", + "type": "leaf", "state": { "type": "review-queue-list-view", "state": {}, @@ -1276,11 +1296,11 @@ "periodic-notes:Open today": false } }, - "active": "f75db023ac07cdfd", + "active": "567d74707cb7125a", "lastOpenFiles": [ + "0 Journal/0 Daily/2025-05-13.md", "0 Journal/0 Daily/2025-05-13.sync-conflict-20250513-182543-6QX3SGA.md", "2 Personal/Lists/Business Ideas.md", - "0 Journal/0 Daily/2025-05-13.md", "2 Personal/Lists/Packlisten/Packliste - Skihochtour.md", "2 Personal/Lists/Packlisten/Packliste - Skitour.md", "2 Personal/Lists/Packlisten/Packliste - Berge Mehrtages.md", diff --git a/2 Personal/1 Skills/IT/React Learnings.md b/2 Personal/1 Skills/IT/React Learnings.md new file mode 100644 index 0000000..11563ac --- /dev/null +++ b/2 Personal/1 Skills/IT/React Learnings.md @@ -0,0 +1,16 @@ +--- +title: React Learnings +created_date: 2025-05-17 +updated_date: 2025-05-17 +aliases: +tags: +--- +# React Learnings + +## State Machine - Reducers +Reducers are what they are named after: they reduce the current state variable and an action/event into a new state and therefore are perfect for handling state machines of complex components within a react app. +The official documentation is really good: [useReducer – React](https://react.dev/reference/react/useReducer) and this blog article helped me as well: [Medium](https://medium.com/better-programming/simplify-your-react-components-state-with-a-state-machine-8e9c9a4ee1f6) + +Reducers are pure, so within the reducer function you never do any API calls or anything that needs to do calculations. + +If you need to do any API calls or heavy calculations they must be done outside of the reducer function as explained here: [Just a moment...](https://stackoverflow.com/questions/64419132/how-to-make-api-call-in-usereducer).