javascript - Svelte 每个块只渲染最后一项
问题描述
我正在尝试在 svelte 中制作标签输入组件,但遇到了奇怪的#each
块行为。我有以下苗条的代码
<script>
import Input from './Input.svelte'
import Tag from './Tag.svelte'
export let tagValues = []
let currentTag = ''
function handleEnter({ key }) {
if (key === 'Enter' && currentTag) {
if (tagValues.indexOf(currentTag) < 0) {
tagValues = [...tagValues, currentTag]
}
currentTag = ''
}
}
</script>
<div class="relative">
<Input bind:value={currentTag} on:keyup={handleEnter}></Input>
{#each tagValues as t (t)}
<Tag value={t}></Tag>
{/each}
{JSON.stringify(tagValues, null, 2)}
</div>
这个想法是在用户点击 Enter 键时获取输入值,如果该值尚不存在,则将该值添加为标签。Input
组件的行为与input
Html 元素相同。Tag
组件只有一个value
文本属性,它应该呈现tagValues
数组的所有值,但只显示最后一个。我可以确认该数组包含正确的新标签,因为我将它的字符串化版本粘贴到 HTML。这是 1 个标签的样子
这是有两个标签
我怎样才能让这个组件呈现所有标签?我试图让我的每个块都被键入,但没有任何改变。
解决方案
推荐阅读
- python - 为什么 inpaint 方法不能从 IC 图像中删除文本?
- r - SQLite 对 R 中缺少的表进行故障排除
- python - 为什么我尝试导入 pyttsx 时出现错误
- javafx - 使用不同列中的 TextField 编辑 JavaFx TableView 单元格
- r - 将 rank() 应用于 data.table 和整个表的子集
- facebook - Facebook Instant Games 不提供玩家照片
- vue.js - Vue.js的vuexpress、VuePress和vue-server-renderer模块的区别和使用
- android - Android Kotlin Parcelize android 扩展给出错误
- mongodb - 如何清除 mongo DB 中多个集合的数据?
- javascript - 如何创建一个假的 Gamepad 对象?