Hay dos objetos separados que vienen del backend. Quiero crear dos objetos diferentes usando el mismo estado. Entonces quiero llamar e imprimirlos. ¿Cómo puedo hacerlo?
PolicyContext
import React, { createContext, useMemo, useState } from 'react'; export const PolicyContext = createContext(undefined); const PolicyContextProvider = (props) => { const [policyData, setPolicyData] = useState({ activiesPolicy: '', passivePolicy: '' }); return ( <PolicyContext.Provider value={useMemo(() => { return ({ policyData, setPolicyData, }); }, [{ policyData, setPolicyData }])} > {props.children} </PolicyContext.Provider > ); }; export default PolicyContextProvider;casa.js
const activiesPolicyExampleReq = { nationalId: '59104492600', }; const passivePolicyExampleReq = { nationalId: '59104492600', }; const { policyData, setPolicyData } = useContext(PolicyContext); useEffect(() => { if (Object.keys(policyData.activiesPolicy).length === 0) { PolicyService.getActivePolicies(activiesPolicyExampleReq).subscribe( (response) => { setPolicyData(response); } ); } }, []); useEffect(() => { if (Object.keys(policyData.passivePolicy).length === 0) { PolicyService.getPassivePolicies(passivePolicyExampleReq).subscribe( (response) => { setPolicyData(response); } ); } }, []);Creo que mis consultas se están abrumando entre sí.
Parece que desea asignar una respuesta a una clave específica en su objeto de estado. Puede hacerlo extendiendo el estado existente y modificando solo una parte de él cuando llama al gancho setState.
Dado que tienes un estado como este:
const [policyData, setPolicyData] = useState({ activiesPolicy: '', passivePolicy: '' });probablemente quieras hacer algo como esto:
useEffect(() => { if (Object.keys(policyData.activiesPolicy).length === 0) { PolicyService.getActivePolicies(activiesPolicyExampleReq).subscribe( (response) => { setPolicyData((prevState) => ({...prevState, activiesPolicy: response}); } ); } }, []); useEffect(() => { if (Object.keys(policyData.passivePolicy).length === 0) { PolicyService.getPassivePolicies(passivePolicyExampleReq).subscribe( (response) => { setPolicyData((prevState) => ({...prevState, passivePolicy: response}); } ); } }, []);