Soy completamente nuevo en react.js.
Estoy obteniendo datos asíncronos de mi servidor que usa express.js. Después de obtener esos datos, quiero configurar los parámetros de mi casa cuando abra esa página por primera vez.
const Houses = () => { const [house, setHouse] = useState({}); ... useEffect(() => { const fetchData = () => { fetch('http://localhost:9000/houses') .then(res => res.text()) .then(res => { if (res) { let houseData = JSON.parse(res); console.log(houseData); // server res prints correctly - prints: { name: 'sweet house', address: 'fukuoka hakata' } setHouse({...house, houseData}); console.log(house); // doesnt change after sethouse - prints : {} } }); } fetchData(); }, []); ... }Estoy obteniendo los datos de mi servidor sin ningún problema. El problema es que los parámetros de la casa no se actualizan. Sé que es un alcance diferente, lo que necesito saber es cómo lo hago en este caso. Gracias
No puede acceder al estado de la house inmediatamente después de configurarlo, setHouse puede estar agrupado.
Ver más de Estado: https://reactjs.org/docs/state-and-lifecycle.html
usted está tratando de hacer
let houseData = JSON.parse(res); // houseData = { name: 'sweet house', address: 'fukuoka hakata' } setHouse({ ...house, houseData: houseData }); en lugar de setHouse(houseData) . Dado que houseData es un objeto, puede configurarlo directamente.
Reemplazar
setHouse({...house, houseData})con
setHouse(houseData)