“动态更新列表组件数据”在不同技术栈下写法不同。下面我按常见前端场景给你总结几种主流做法,你可以对号入座。
const data = ['A', 'B', 'C'];
function renderList() {
const ul = document.getElementById('list');
ul.innerHTML = '';
data.forEach(item => {
const li = document.createElement('li');
li.textContent = item;
ul.appendChild(li);
});
}
renderList();
// 动态更新
data.push('D');
renderList();
✅ 简单
❌ 性能一般(列表大时不推荐)
function addItem(item) {
const li = document.createElement('li');
li.textContent = item;
document.getElementById('list').appendChild(li);
}
✅ 性能好
✅ 适合追加数据(如聊天、日志)
<template>
<ul>
<li v-for="item in list" :key="item.id">
{{ item.name }}
</li>
</ul>
<button @click="addItem">添加</button>
</template>
<script setup>
import { ref } from 'vue'
const list = ref([
{ id: 1, name: 'A' },
{ id: 2, name: 'B' }
])
function addItem() {
list.value.push({
id: Date.now(),
name: 'New'
})
}
</script>
✅ 响应式自动更新
✅ 必须保证 key 唯一
import { useState } from 'react'
function List() {
const [list, setList] = useState(['A', 'B'])
function addItem() {
setList([...list, 'C'])
}
return (
<div>
<ul>
{list.map((item, index) => (
<li key={index}>{item}</li>
))}
</ul>
<button onClick={addItem}>添加</button>
</div>
)
}
✅ 状态驱动 UI
❌ 不要直接修改原数组
setInterval(() => {
fetch('/api/list').then(res => res.json())
}, 5000)
socket.on('data', newData => {
list.value = newData
})
list.push(...newItems)
key如果你能告诉我:
我可以给你更精确的代码示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。