为什么 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>
所以我会说不,你不能停用此行为。
在 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>
所以我会说不,你不能停用此行为。