From 99dd1af473230e9df95b1b265f0c4b9bf1d622df Mon Sep 17 00:00:00 2001 From: Marco Kittel Date: Wed, 11 Jun 2025 20:09:47 +0200 Subject: [PATCH] =?UTF-8?q?Context=20eingef=C3=BCgt=20und=20im=20Komponent?= =?UTF-8?q?enbaum=20auf=20der=20tiefsten=20Ebene=20ge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 51 +++++++++++++++++++++-------------- src/CtxTest.tsx | 16 +++++++++++ src/NewFoo.tsx | 71 ++++++++++++++++++++++++++----------------------- 3 files changed, 85 insertions(+), 53 deletions(-) create mode 100644 src/CtxTest.tsx diff --git a/src/App.tsx b/src/App.tsx index 76166f5..bea883c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,10 +1,19 @@ -import { createSignal, For, Show } from "solid-js"; +import { createContext, createSignal, For, Show } from "solid-js"; import { Dynamic } from "solid-js/web"; import { FooComponent } from "./Foo"; import { NewFooComponent } from "./NewFoo"; -import { ActionComponent} from "./Action"; +import { ActionComponent } from "./Action"; import { Router, Route } from "@solidjs/router"; +export const MyContext = createContext(); +const Provider = (props) => { + const [value, setValue] = createSignal("okay, hier sind wir"); + return ( + + {props.children} + + ) +} const RedDiv = () =>
Red
; const GreenDiv = () =>
Green
; @@ -48,24 +57,26 @@ function App() { return ( <> - - - - -
- blue background -
- - - } /> - + + + + + +
+ blue background +
+ + + } /> + +
); } diff --git a/src/CtxTest.tsx b/src/CtxTest.tsx new file mode 100644 index 0000000..e1fd51d --- /dev/null +++ b/src/CtxTest.tsx @@ -0,0 +1,16 @@ +import { createSignal, useContext, createResource, Switch, Match, Show } from "solid-js" +import { MyContext } from "./App"; + +export function CtxTest() { + const [value, setValue] = useContext(MyContext); + setTimeout(()=>{ + setValue("Wir haben den Context aus der Tiefe des Komponentenbaums geƤndert!"); + },3000); + return ( + <> +

+ {value} +

+ + ) +} diff --git a/src/NewFoo.tsx b/src/NewFoo.tsx index 0d0fe7d..4883ebc 100644 --- a/src/NewFoo.tsx +++ b/src/NewFoo.tsx @@ -1,40 +1,45 @@ -import {createSignal, createResource, Switch, Match, Show} from "solid-js" +import { createSignal, useContext, createResource, Switch, Match, Show } from "solid-js" +import { MyContext } from "./App"; +import { CtxTest } from "./CtxTest"; const fetchUser = async () => { - const response = await fetch(''); - return new Promise((resolve) => { - setTimeout(() => { - resolve(["abc", "def", "ghi"]); - }, 3000); // 2 Sekunden Delay - }); + const response = await fetch(''); + return new Promise((resolve) => { + setTimeout(() => { + resolve(["abc", "def", "ghi"]); + }, 3000); // 2 Sekunden Delay + }); } -function NewFooComponent(){ - const [userId, setUserId] = createSignal(); - const [user, { mutate }] = createResource(userId, fetchUser); +function NewFooComponent() { + const [userId, setUserId] = createSignal(); + const [user, { mutate }] = createResource(userId, fetchUser); + const [value,setValue] = useContext(MyContext); - setTimeout(()=>{ - setUserId(5); - },2000); - return ( - <> - - Loading... - - - - Error: {user.error} - - -
{JSON.stringify(user())}
-
-
-
- New Foo - -
- - ); + setTimeout(() => { + setUserId(5); + }, 2000); + return ( + <> +
--- {value}
+ + Loading... + + + + Error: {user.error} + + +
{JSON.stringify(user())}
+
+
+
+ New Foo + +
+ + + ); } -export{ NewFooComponent } +export { NewFooComponent }