Skip to content

Commit 651deea

Browse files
committed
Add useCallback
1 parent 2c90345 commit 651deea

File tree

5 files changed

+33
-0
lines changed

5 files changed

+33
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<script>
2+
</script>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import type { PageLoad } from "./$types"
2+
3+
export const load = (async ({ params }) => {
4+
return {
5+
title: "useCallback",
6+
react: (await import("./react.jsx?raw")).default,
7+
svelte: (await import("./svelte.svelte?raw")).default,
8+
}
9+
}) satisfies PageLoad
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// This function (component) is executed on every render
2+
function Component() {
3+
// this event handler is redefined on every render
4+
const handleClick = () => alert("hello")
5+
6+
// because `handleClick` is redefined on every render, `ChildComponent` will be re-rendered too. Because its `onClick` prop is considered changed.
7+
return <ChildComponent onClick={handleClick} />
8+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
// In Svelte this isn't needed, because event handlers are declared inside <script> tags.
3+
// They aren't defined in the render path and therefore aren't redefined on every render.
4+
// They are defined once per component, so they work similar to how event handlers worked with React.Component.
5+
</script>

src/routes/+layout.svelte

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
let tile3Url = "/useMemo"
1313
let tile4Url = "/useRef"
1414
let tile5Url = "/useReducer"
15+
let tile6Url = "/useCallback"
1516
</script>
1617

1718
<!-- App Shell -->
@@ -88,6 +89,14 @@
8889
href={tile5Url}
8990
class={tile5Url === $page.url.pathname ? "bg-primary-500" : ""}><Icon icon="code" /></AppRailTile
9091
>
92+
<AppRailTile
93+
label="useCallback"
94+
title="useCallback"
95+
value={5}
96+
tag="a"
97+
href={tile6Url}
98+
class={tile6Url === $page.url.pathname ? "bg-primary-500" : ""}><Icon icon="code" /></AppRailTile
99+
>
91100
</svelte:fragment>
92101

93102
<svelte:fragment slot="trail">

0 commit comments

Comments
 (0)