我在vue 3项目中更新一个react 对象时遇到了一些问题,我创建了一个数组google. maps. marker. AdvancedMarkerElement,我创建的数组如下—>

localizaciones.forEach((localizacion) => {
        if (localizacion.agrupaciones) localizacion.agrupacionesF = localizacion.agrupaciones.split(",");
        const glyphSvgPinElement = new PinElement();
        const glyphImg = document.createElement("img");
        glyphImg.src = usingIconsStore.setIcon(localizacion.icono);
        glyphSvgPinElement.glyph = glyphImg;
        const advancedMarker = new AdvancedMarkerElement({
            position: {
                lat: localizacion.lat!,
                lng: localizacion.lng!
            },
            content: glyphSvgPinElement.element,
            title: localizacion.agrupacionesF![0]
        });
        advancedMarker.setAttribute("agrupacionesArr", localizacion.agrupaciones);
        advancedMarker.setAttribute("id", String(localizacion.id));
        advancedMarker.setAttribute("icono", String(localizacion.icono));
        marcadores.value.marcadores.push(advancedMarker);
        google.maps.event.addListener(advancedMarker, "click", async function () {
            infoFichaHelper.value = { marcador: advancedMarker, sugerencia: await pedirDetalleEstacion(props.tipoMapa, localizacion.id) }
        });
    });

在marcadores中,它是一个变量声明如下:

let marcadores = ref<google.maps.marker.AdvancedMarkerElement[]>([])

然后在第一次加载我的组件过滤这个数组以获得最喜欢的那些这个数组是空的有没有一种方法在第一次加载这个react 数组充电?

推荐答案

onMounted lifecycle hook中初始化并填充此数组应有助于确保google.maps.marker.AdvancedMarkerElement objects的react 式数组在Vue 3 component的第一次加载时被填充.

这将保证在组件安装到DOM之后填充数组,这对于涉及操作或等待外部资源(如Google Maps)的操作来说很重要.

┌─────────────┐      ┌──────────────────────┐      ┌─────────────┐
│             │      │                      │      │             │
│   Created   │─────>│    onMounted         │─────>│   Mounted   │
│             │      │ (populateMarcadores) │      │             │
└─────────────┘      └──────────────────────┘      └─────────────┘
                                │
                                ▼
                        ┌─────────────────┐
                        │                 │
                        │ Populate array  │
                        │    marcadores   │
                        │                 │
                        └─────────────────┘

这意味着将填充marcadores数组的逻辑移动到onMounted生命周期钩子中调用的函数中:将填充逻辑重构为函数:

import { onMounted, ref } from 'vue';

let marcadores = ref([]);

function populateMarcadores(localizaciones) {
    localizaciones.forEach((localizacion) => {
        // Your existing logic for populating each marker
        // 
        marcadores.value.push(advancedMarker);
        // Add event listener and other logic
        // 
    });
}

然后在onMounted钩子内调用populateMarcadores:

onMounted(() => {
    // Assuming `localizaciones` is available at this point
    populateMarcadores(localizaciones);
});

After making sure the array is populated on component mount, you can access the filtered or manipulated version of this array as needed in your component.
For example, to filter this array for favorite markers:

import { computed } from 'vue';

const favoriteMarkers = computed(() => {
    return marcadores.value.filter(marker => /* your condition for favorites */);
});

依赖于已填充的marcadores数组的任何操作都必须在数组填充之后执行.这通常意味着访问模板内的数组、计算(computed)属性或方法,这些方法由用户交互或onMounted钩子初始填充后发生的其他react 性变化触发.

Typescript相关问答推荐

如何在另一个if条件中添加if条件

为什么在TypScript中写入typeof someArray[number]有效?

将值添加到具有不同类型的对象的元素

如何根据另一个属性的布尔值来缩小函数属性的返回类型?

为什么TypeScript假设文档对象始终可用?

rxjs forkJoin在错误后不会停止后续请求

泛型类型,引用其具有不同类型的属性之一

打字类型保护递归判断

为什么在这个例子中,我把缺少的属性添加到对象中时,TypeScrip没有拾取,如何修复?

在Reaction-Native-ReAnimated中不存在Animated.Value

@TANSTACK/REACT-QUERY中发生Mutations 后的数据刷新问题

TypeScrip错误:为循环中的对象属性赋值

为什么特定的字符串不符合包括该字符串的枚举?

打字脚本中的模块化或命名空间

将接口映射到交叉口类型

如何使用TypeScrip在EXPO路由链路组件中使用动态路由?

如何正确键入泛型相对记录值类型?

Karma Angular Unit测试如何创建未解析的promise并在单个测试中解决它,以判断当时的代码是否只在解决后运行

带动态键的 TS 功能

覆盖高阶组件中的 prop 时的泛型推理