返回顶部
S

SvelteSvelte避坑指南

Avoid common Svelte mistakes — reactivity triggers, store subscriptions, and SvelteKit SSR gotchas.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,140
下载量
免费
免费
3
收藏
概述
安装方式
版本历史

Svelte

响应式触发器

  • - 赋值触发响应式 — push 后使用 arr = arr,或使用 arr = [...arr, item]
  • 数组方法不触发响应式 — arr.push() 需要重新赋值:arr = arr
  • 对象修改同样问题 — obj.key = val; obj = obj 或展开:obj = {...obj, key: val}
  • $: 响应式语句在依赖变化时运行 — 但仅跟踪顶层赋值

响应式语句

  • - $: 在依赖变化时运行 — 列出所有使用的依赖
  • $: { } 块用于多条语句 — 所有语句一起运行
  • $: 顺序很重要 — 后面的语句可以依赖前面的
  • 避免在 $: 中产生副作用 — 优先使用派生值,副作用使用 onMount

存储

  • - $store 在组件中自动订阅 — 销毁时自动取消订阅
  • 手动订阅需要取消订阅 — const unsub = store.subscribe(v => ...); onDestroy(unsub)
  • writable 用于读写 — readable 用于外部数据源
  • derived 用于计算值 — derived(store, $s => $s * 2)

组件生命周期

  • - onMount 在首次渲染后运行 — 返回清理函数
  • onMount 之前无法访问 DOM — SSR 中 document 等不可用
  • beforeUpdate / afterUpdate 用于 DOM 同步 — 很少需要
  • tick() 等待 DOM 更新 — 状态变更后使用 await tick()

属性

  • - export let propName 声明属性 — 默认必填
  • export let propName = default 可选属性 — 未传入时使用默认值
  • 属性是响应式的 — 组件在属性变化时重新渲染
  • $$props 和 $$restProps 用于透传 — 但优先使用显式属性

事件

  • - createEventDispatcher 用于自定义事件 — dispatch(eventName, data)
  • on:eventName 监听事件 — on:click, on:customEvent
  • on:click|preventDefault 修饰符 — |stopPropagation, |once
  • 事件转发:不带处理器的 on:click — 转发给父组件

SvelteKit

  • - +page.svelte 用于页面 — +page.server.ts 用于仅服务端加载
  • load 函数用于数据获取 — 在服务端和客户端导航时运行
  • $app/stores 用于页面、导航等 — $page.params, $page.url
  • form 操作用于数据变更 — 渐进增强,无 JS 也可工作

SSR 注意事项

  • - $app/environment 中的 browser — 使用 window/document 前检查
  • onMount 仅在客户端运行 — 浏览器 API 安全使用
  • 服务端初始化的存储在请求间共享 — 使用上下文处理请求特定数据
  • load 中的 fetch 特殊 — 支持相对 URL,自动处理凭证

Svelte 5 Runes

  • - $state() 替代 let 实现响应式 — let count = $state(0)
  • $derived 替代 $: 实现计算 — let doubled = $derived(count * 2)
  • $effect 用于副作用 — 替代带副作用的 $:
  • Runes 按文件选择启用 — 可与 Svelte 4 语法混用

常见错误

  • - 解构属性会丢失响应式 — Svelte 5 中使用 let { prop } = $props(),Svelte 4 中不解构
  • 存储值与存储对象 — $store 获取值,store 用于订阅/设置
  • 条件渲染上的过渡 — {#if show}
    不在外层使用
  • 键块用于重新渲染 — {#key value}...{/key} 销毁并重新创建

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 svelte-1776328216 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 svelte-1776328216 技能

通过命令行安装

skillhub install svelte-1776328216

下载

⬇ 下载 Svelte v1.0.0(免费)

文件大小: 2.15 KB | 发布时间: 2026-4-17 14:10

v1.0.0 最新 2026-4-17 14:10
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部