为什么 svelte 处理 "value" 的方式与其他属性不同?

Why does svelte handle "value" differently from other attributes?

在 svelte (3.42.5) 中,名为“value”的属性与其他属性的翻译方式不同。

即组件

<progress value="50" max="100"/>

翻译成

...
function create_fragment(ctx) {
    ...
    return {
        c() {
            progress = element("progress");
            progress.value = "50";
            attr(progress, "max", "100");
        },
        ...

可以看出属性“value”的设置方式不同于“max”。虽然这是浏览器中完全正确的 javascript 代码,但它使 svelte-native struggle.

此外,我问自己为什么 svelte 有这种特殊处理?!?有没有办法关闭它?

据我所知,value是一个保留关键字,用来设置这个tag/component的

例如:当您使用 select & 选项标签时,选项的值是用 value 关键字设置的。

<select bind:value={selected}>
    <option value={a}>a</option>
    <option value={b}>b</option>
    <option value={c}>c</option>
</select>

所以我会说不,你不能停用此行为。

参考:https://svelte.dev/docs#Binding_select_value