洗掉陣列物件后,我希望平面串列會更新,但在我重新加載應用程式之前它會失敗。有沒有辦法實時獲取更新?
我的代碼:
...imports...
arr = [
{id:1, name:'test1'},
{id:2, name:'test2'},
{id:3, name:'test3'},
]
export default function App() {
const [posts, setPosts] = useState([])
setTimeout(() => { delBet() }, 8000)
function delBet() {
try {
arr.splice(arr[2], 1); setPosts(arr)
//only remove {id:3, name:'test3'},
console.log(arr) //works well
//only show [{id:1, name:'test1'},{id:2, name:'test2'}]
} catch (e) { console.log(e) }
}
return (
<FlatList
data={posts}
extraData={posts} //doesn't work/make any difference
renderItem={({ item }) =>
<Post
post={item}
/>
}
/>
)
}
我會很感激任何幫助(包括改進我的代碼)
uj5u.com熱心網友回復:
你的狀態變了,
嘗試
setPosts([...arr]);代替setPosts(arr);
uj5u.com熱心網友回復:
post的實際值是[],如果你需要嘗試用arr值初始化posts,就像這樣:
const [posts, setPosts] = useState(arr)
此外,您可以在使用效果中使用 setTimeout 進行一次渲染。
useEffect(()=> {
setTimeout(() => { delBet() }, 8000)
function delBet() {
try {
setPosts(() => arr.splice(arr[2], 1))
} catch (e) { console.log(e) }
}
}, [])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460234.html
標籤:javascript 数组 反应 反应式
上一篇:Discord.js-如果我有一個選擇了隨機選項的陣列,有沒有辦法發送與此選項匹配的gif?
下一篇:Vue3使用功能不起作用
