Svelte 最新中文文档翻译(10)—— use: 与 Actions

news/2025/4/19 3:50:01/文章来源:https://www.cnblogs.com/yayujs/p/18717959

前言

Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1

image.png

Svelte 以其独特的编译时优化机制著称,具有轻量级高性能易上手等特性,非常适合构建轻量级 Web 项目,也是我做个人项目的首选技术栈。

目前 Svelte 基于 Svelte 5 发布了最新的官方文档,但却缺少对应的中文文档。为了帮助大家学习 Svelte,为爱发电翻译了官方文档。

我同时搭建了 Svelte 最新的中文文档站点:https://svelte.yayujs.com ,如果需要辅助学习,也可以入手我的小册《Svelte 开发指南》,语法篇、实战篇、原理篇三大篇章带你系统掌握 Svelte!

虽说是翻译,但个人并不喜欢严格遵守原文,为了保证中文阅读流畅,会删减部分语句,对难懂的部分也会另做补充解释,希望能给大家带来一个好的中文学习体验。

欢迎围观我的“朋友圈”、加入“低调务实优秀中国好青年”前端社群,分享技术,带你成长。

use:

Actions(动作)是在元素挂载时调用的函数。它们通过 use: 指令添加,通常会使用 $effect 以便在元素卸载时重置任何状态:

<!--- file: App.svelte --->
<script>/** @type {import('svelte/action').Action} */function myaction(node) {// 节点已被挂载到 DOM 中$effect(() => {// 这里进行设置return () => {// 这里进行清理};});}
</script><div use:myaction>...</div>

action 可以带参数调用:

<!--- file: App.svelte --->
<script>/** @type {import('svelte/action').Action} */function myaction(node, +++data+++) {// ...}
</script><div use:myaction={+++data+++}>...</div>

action 只会调用一次(但在服务端渲染期间不会调用)—— 即使参数发生变化也不会再次运行。

[!LEGACY]
$effect 符文出现之前,action 可以返回一个带有 updatedestroy 方法的对象,如果参数发生变化,update 将被调用并使用最新的参数值。现在推荐使用 effects。

类型定义

Action 接口接收三个可选的类型参数 —— 节点类型(可以是 Element,如果 action 适用于所有元素)、参数,以及由 action 创建的任何自定义事件处理程序:

<!--- file: App.svelte --->
<script>import { on } from 'svelte/events';/*** @type {import('svelte/action').Action<* 	HTMLDivElement,* 	null,* 	{* 	   onswiperight: (e: CustomEvent) => void;* 	   onswipeleft: (e: CustomEvent) => void;* 		// ...* }>}*/function gestures(node) {$effect(() => {// ...node.dispatchEvent(new CustomEvent('swipeleft'));// ...node.dispatchEvent(new CustomEvent('swiperight'));});}
</script><divuse:gesturesonswipeleft={next}onswiperight={prev}
>...</div>

Svelte 中文文档

本篇已收录在掘金专栏 《Svelte 中文文档》,该系列预计 40 篇。

系统学习 Svelte,欢迎入手小册《Svelte 开发指南》。语法篇、实战篇、原理篇三大篇章带你系统掌握 Svelte!

此外我还写过 JavaScript 系列、TypeScript 系列、React 系列、Next.js 系列、冴羽答读者问等 14 个系列文章, 全系列文章目录:https://github.com/mqyqingfeng/Blog

通过文字建立交流本身就是一种缘分,欢迎围观我的“朋友圈”、加入“低调务实优秀中国好青年”前端社群,分享技术,带你成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/884670.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s之coredns

CoreDNS CoreDNS 是一个开源的、灵活的 DNS(域名系统)服务器,它被设计为易于扩展和与微服务架构兼容。 CoreDNS 通常用于云原生环境,如 Kubernetes,负责为Kubernetes提供名称解析和服务发现。 Kubernetes集群内部pod访问Service Client pod ---> Service Name(coredns)…

如何在啥也不懂的情况下将你的公众号接入DeepSeek或其它大模型

本文详细介绍了零基础用户如何借助AI工具将微信公众号接入DeepSeek等大模型实现智能回复的全流程。首先通过AI问答确定开源项目chatgpt-on-wechat,利用豆包AI分析项目结构后选择Docker部署方案。重点讲解了在Ubuntu系统配置国内镜像安装Docker、编写含中文注释的docker-compos…

rust学习十八.1、RUST的OOP和简单示例

很可惜,出于一些理由,rust抛弃了OOP的核心特性之一:继承 其中一个理由应该是至关重要的,但是解释的比较模糊:继承增加了复杂性的确,继承会让rust编译器变得更加复杂。rust编译器虽然足够体贴,但是它偏慢的编译速度也是很多人所吐槽的。 在我对rust编译了解更多之前,我对…

Docker 数据卷容器-数据卷备份和还原

以下是关于 Docker 数据卷容器 的详细总结,以及如何进行 数据卷备份和还原 的说明:1. 什么是 Docker 数据卷容器? 概念:数据卷容器 是一种特殊的容器,用于存储和管理数据卷。 它的主要作用是让多个容器通过挂载同一个数据卷容器来实现 数据共享 和 独立管理。 数据卷容器的…

01 C++ 与 C 的区别 class类

描述确定一个事物,是行为(功能),而不是数据。例如:写字的,吸墨水的,笔尖是金属的。(毛笔)行为描述这个事物是钢笔。而不是黑色的等数据。 软件设计模式: 先搞清有哪些事物,联系人个人信息 C语言模块化设计与C++面向对象设计的区别:分离实体、找对象、拉关系。 分离…

机房杀(中国OIer都在玩的益智游戏)

基础牌 内卷:当作杀使用,可以在影响范围内指定一名角色产生一点伤害 刷题:当作闪使用,可以抵消掉对方内卷带来的伤害 睡觉:当作桃使用,可以恢复一滴血 切题:和内卷一起使用可以对对方造成两点伤害 技能牌 教练来了:所有玩家必须打出一张内卷,否则造成一点伤害 我是卷怪…

代码编写与实践

高质量代码编写 遵循规范:严格遵循 Java 编码规范,如 Google Java 风格指南,确保代码具有良好的可读性和可维护性。规范的代码结构有助于团队协作,也方便自己后续的代码审查和修改。 运用设计模式:学习并在项目中合理运用设计模式,如单例模式、工厂模式、观察者模式等。设…

Git 仓库瘦身

如有错误和建议请评论告知。Git 版本库如何瘦身? 随着git仓库的使用,仓库的体积越来越大,主要是.git文件夹记录了所有的历史记录。它能否“瘦身”呢?又该如何操作呢? 查看仓库的存储统计信息 $ git count-objects -vH count: 91 size: 888.88 KiB in-pack: 1250 packs: 1…