Skip to content

Commit 9676f91

Browse files
committed
chore: add shared signal example
1 parent ba58f66 commit 9676f91

File tree

5 files changed

+70
-0
lines changed

5 files changed

+70
-0
lines changed

playground/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"preview": "vite preview"
1010
},
1111
"dependencies": {
12+
"@preact/signals": "^1.3.0",
1213
"preact": "^10.24.2"
1314
},
1415
"devDependencies": {

playground/src/api/random-data.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default function (req, res) {
2+
return res.json(
3+
Array.from({ length: 3 })
4+
.fill(0)
5+
.map((d, i) => (i + 1) * Math.random())
6+
)
7+
}
+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { signal } from '@preact/signals'
2+
import { useEffect } from 'preact/hooks'
3+
4+
const data$ = signal([])
5+
6+
async function fetchData() {
7+
const data = await fetch('/api/random-data').then(d => d.json())
8+
data$.value = data
9+
}
10+
11+
export function Triggerer() {
12+
useEffect(() => {
13+
fetchData()
14+
}, [])
15+
return (
16+
<div class="p-10 border border-red-400 border-dashed">
17+
<h2>Triggerer Island</h2>
18+
<button class="px-4 py-2 text-white bg-black rounded-md" onClick={fetchData}>Fetch Again</button>
19+
</div>
20+
)
21+
}
22+
23+
export function Renderer() {
24+
return (
25+
<div class="p-10 border border-blue-400 border-dashed">
26+
<h2>Renderer Island</h2>
27+
<ul>
28+
{data$.value.map(d => (
29+
<li>{d}</li>
30+
))}
31+
</ul>
32+
</div>
33+
)
34+
}
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Renderer, Triggerer } from '../components/SharedSignal.js'
2+
3+
export default function SharedSignal() {
4+
return (
5+
<div class="flex flex-col gap-2 p-10">
6+
<Triggerer />
7+
<Renderer />
8+
</div>
9+
)
10+
}

pnpm-lock.yaml

+18
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)