Svelte的action怎么传多个参数?

成娟 Dev 阅读 5

我在用Svelte写一个拖拽组件,想通过action来绑定mousedown事件,但发现action只能接收一个参数。我试过把多个值包成对象传进去,结果在action里解构的时候老是报错,说undefined。

比如下面这样写:

function draggable(node, { startX, startY }) {
  console.log(startX, startY);
}

// 在组件里用
use:draggable={{ startX: 100, startY: 200 }}

但控制台一直提示startX是undefined,是我写法有问题吗?还是Svelte的action根本不支持传对象?

我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
萌新.红芹
你把参数包成对象的思路是对的,但写法有点小问题。在组件里用的时候要这样写:use:draggable={{startX: 100, startY: 200}},注意等号两边不要有空格。另外在action函数里解构前先检查一下是不是undefined,差不多就行:

function draggable(node, options) {
if (!options) return;
const { startX = 0, startY = 0 } = options || {};
console.log(startX, startY);
}
点赞
2026-03-28 09:01