estoy tratando de darle a una matriz un valor inicial en cada renderizado, esto es lo que obtuve por el momento
const [mercadoactivo, conjuntomercadoactivo] = useState([]); const Markets = [ 'DE', 'ES', 'FR', 'UK'], obtuve los valores después de algunos filtros en state.session. const CountryCode = DE, obtuve el valor después de filtrar en state.session.
y estoy tratando de llenar una matriz en cada representación usando estos valores, esto es lo que obtuve por el momento
useEffect(() => { markets.map((item) => { setActiveMarket([ ...activeMarket, { id: item, isActiveMarket: true, brandName, }, ]); }); }, []);sigo obteniendo una matriz vacía, no sé qué estoy haciendo mal exactamente porque cuando hice esto funcionó, pero solo con un objeto:
useEffect(() => { setActiveMarket([ ...activeMarket, { id: countryCode, isActiveMarket: true, brandName, }, ]); }, []);Intente crear una nueva matriz local en useEffect y luego, después de mapearla, asígnela a la variable de estado de esta manera:
useEffect(() => { const tmpMarkets = markets.map((item) => ({ id: item, isActiveMarket: true, brandName }); setActiveMarket(tmpMarkets); }, []);Su primer fragmento está restableciendo continuamente la variable de estado en cada ciclo, por eso no está obteniendo la matriz correcta.
Puedes hacerlo
useEffect(() => { setActiveMarket(activeMarket => [ ...activeMarket, ...markets.map((item, i) => ({ id: item, isActiveMarket: i === 0, brandName, })) ]); }); }, []);su primer ejemplo no es correcto porque está configurando continuamente el estado y eso desencadena la representación del componente