Después de eliminar un objeto de matriz, espero que la lista plana se actualice, pero falla hasta que vuelvo a cargar la aplicación. ¿Hay alguna manera de obtener la actualización en tiempo real?
Mi código:
...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} /> } /> ) }Agradecería cualquier tipo de ayuda (incluso mejorar mi código)
Tu estado está mutado,
probar
setPosts([...arr]); en lugar de setPosts(arr);
El valor real de las publicaciones es [], si necesita intentar inicializar las publicaciones con el valor arr, así:
const [posts, setPosts] = useState(arr)Además, puede usar setTimeout dentro de un efecto de uso para renderizar solo una vez.
useEffect(()=> { setTimeout(() => { delBet() }, 8000) function delBet() { try { setPosts(() => arr.splice(arr[2], 1)) } catch (e) { console.log(e) } } }, [])