diff --git a/06_react/unterricht/tag36/01_components-with-hooks/src/App.jsx b/06_react/unterricht/tag36/01_components-with-hooks/src/App.jsx
index 36b1aba..0e6b69f 100644
--- a/06_react/unterricht/tag36/01_components-with-hooks/src/App.jsx
+++ b/06_react/unterricht/tag36/01_components-with-hooks/src/App.jsx
@@ -3,6 +3,9 @@ import FooterMain from './components/footers/FooterMain';
import ExampleUseState from './components/examples/ExampleUseState';
import ExampleUseReducer from './components/examples/ExampleUseReducer';
+import ThemeProvider from './components/examples/theme-switcher/ThemeProvider';
+import ExampleUseContext from './components/examples/ExampleUseContext';
+import ExampleUseId from './components/examples/ExampleUseId';
function App() {
return (
@@ -25,6 +28,23 @@ function App() {
Components with hooks
+ Example useId
+
+
+
+
+ Example useContext
+
+
+
+
+
+
+
Example useReducer
diff --git a/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/ExampleUseContext.jsx b/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/ExampleUseContext.jsx
new file mode 100644
index 0000000..66c0a02
--- /dev/null
+++ b/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/ExampleUseContext.jsx
@@ -0,0 +1,18 @@
+import { useContext } from 'react';
+import ThemeContext from './theme-switcher/ThemeContext';
+
+const ExampleUseContext = (props) => {
+ // const { } = props;
+
+ const theme = useContext(ThemeContext);
+
+ return (
+
+
useContext
+
+ The theme of this component is: {theme}
+
+
+ );
+};
+export default ExampleUseContext;
diff --git a/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/ExampleUseId.jsx b/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/ExampleUseId.jsx
new file mode 100644
index 0000000..d58a7d2
--- /dev/null
+++ b/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/ExampleUseId.jsx
@@ -0,0 +1,21 @@
+import { useId } from 'react';
+// import { v4 as uid} from 'uuid';
+const ExampleUseId = (props) => {
+ // const { } = props;
+
+ const id = useId().replaceAll(/[_r.]/g, '');
+ // const id = uid(); // von uuid ⇨ 'b18794e8-5d0d-417c-b361-ba38e78411b4'
+
+ return (
+
+
+ ID: {id}
+
+
+
+
+
+
+ );
+};
+export default ExampleUseId;
diff --git a/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/theme-switcher/ThemeContext.jsx b/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/theme-switcher/ThemeContext.jsx
new file mode 100644
index 0000000..dda5e98
--- /dev/null
+++ b/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/theme-switcher/ThemeContext.jsx
@@ -0,0 +1,8 @@
+import { createContext } from 'react';
+
+export const THEME_DEFAULT_VALUE = 'light';
+
+const ThemeContext = createContext(THEME_DEFAULT_VALUE);
+// createContext -> JSX-Element mit value Attribut
+// ...
+export default ThemeContext;
diff --git a/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/theme-switcher/ThemeProvider.jsx b/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/theme-switcher/ThemeProvider.jsx
new file mode 100644
index 0000000..fa141c5
--- /dev/null
+++ b/06_react/unterricht/tag36/01_components-with-hooks/src/components/examples/theme-switcher/ThemeProvider.jsx
@@ -0,0 +1,25 @@
+import { useState } from 'react';
+import ThemeContext, { THEME_DEFAULT_VALUE } from './ThemeContext';
+
+const ThemeProvider = (props) => {
+ const { children } = props;
+
+ console.log(ThemeContext._currentValue); // 'light' <- _currentValue beinhaltet initialWert. Soll aber in production Umgebung nicht verwendet werden, da kein offizieller Standard.
+
+ const [theme, setTheme] = useState(THEME_DEFAULT_VALUE);
+
+ const handleToggleTheme = (e) => {
+ console.log('toggle theme');
+ setTheme((prevState) => (prevState === 'light' ? 'dark' : 'light'));
+ };
+
+ return (
+
+
+ {children}
+
+ );
+};
+export default ThemeProvider;