← 返回
效率工具 中文

Svelte

Avoid common Svelte mistakes — reactivity triggers, store subscriptions, and SvelteKit SSR gotchas.
避免常见 Svelte 错误 — 响应式触发、Store 订阅与 SvelteKit SSR 陷阱。
ivangdavila
效率工具 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 3
Stars
📥 1,556
下载
💾 27
安装
1
版本
#latest

概述

Reactivity Triggers

  • Assignment triggers reactivity — arr = arr after push, or use arr = [...arr, item]
  • Array methods don't trigger — arr.push() needs reassignment: arr = arr
  • Object mutation same issue — obj.key = val; obj = obj or spread: obj = {...obj, key: val}
  • $: reactive statements run on dependency change — but only top-level assignments tracked

Reactive Statements

  • $: runs when dependencies change — list all dependencies used
  • $: { } block for multiple statements — all run together
  • $: order matters — later statements can depend on earlier
  • Avoid side effects in $: — prefer derived values, use onMount for effects

Stores

  • $store auto-subscribes in component — automatic unsubscribe on destroy
  • Manual subscribe needs unsubscribe — const unsub = store.subscribe(v => ...); onDestroy(unsub)
  • writable for read/write — readable for external data sources
  • derived for computed values — derived(store, $s => $s * 2)

Component Lifecycle

  • onMount runs after first render — return cleanup function
  • No access to DOM before onMountdocument etc. not available in SSR
  • beforeUpdate / afterUpdate for DOM sync — rarely needed
  • tick() to wait for DOM update — await tick() after state change

Props

  • export let propName to declare — required by default
  • export let propName = default for optional — default value if not passed
  • Props are reactive — component re-renders on change
  • $$props and $$restProps for pass-through — but explicit props preferred

Events

  • createEventDispatcher for custom events — dispatch('eventName', data)
  • on:eventName to listen — on:click, on:customEvent
  • on:click|preventDefault modifiers — |stopPropagation, |once
  • Event forwarding: on:click without handler — forwards to parent

SvelteKit

  • +page.svelte for pages — +page.server.ts for server-only load
  • load function for data fetching — runs on server and client navigation
  • $app/stores for page, navigating, etc. — $page.params, $page.url
  • form actions for mutations — progressive enhancement, works without JS

SSR Gotchas

  • browser from $app/environment — check before using window/document
  • onMount only runs client-side — safe for browser APIs
  • Stores initialized on server shared between requests — use context for request-specific
  • fetch in load is special — relative URLs work, credentials handled

Svelte 5 Runes

  • $state() replaces let for reactivity — let count = $state(0)
  • $derived replaces $: for computed — let doubled = $derived(count * 2)
  • $effect for side effects — replaces $: with side effects
  • Runes are opt-in per file — can mix with Svelte 4 syntax

Common Mistakes

  • Destructuring props loses reactivity — let { prop } = $props() in Svelte 5, or don't destructure in 4
  • Store value vs store — $store for value, store for subscribe/set
  • Transition on conditional — {#if show}
    not on wrapper
  • Key block for re-render — {#key value}...{/key} destroys and recreates

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-29 00:10 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

productivity

Baidu web search

ide-rea
使用百度AI搜索引擎(BDSE)进行网络搜索。适用于获取实时信息、文档资料或研究课题。
★ 237 📥 105,320
productivity

Weather

steipete
获取当前天气和预报(无需API密钥)
★ 444 📥 226,116
productivity

Word / DOCX

ivangdavila
创建、检查和编辑 Microsoft Word 文档及 DOCX 文件,支持样式、编号、修订记录、表格、分节符及兼容性检查等功能。
★ 438 📥 147,198