Tengo una operación de filtro simple después de eliminar que, por alguna razón, devuelve una matriz vacía. Los valores se evalúan correctamente, pero allSheep ref se reasigna a una matriz vacía después de que se realiza la operación. No estoy seguro de por qué ocurre esto. Aquí está mi función de configuración
setup() { const allSheep = ref([]); const formOpen = ref(false); const searchQuery = ref(""); const searchTag = ref("tag_id"); const axios = inject("axios"); axios .post(GRAPHQL_API_URL, { query: print(ALL_SHEEP), }) .then((response) => { allSheep.value = response.data.data.get_all_sheep; }) .catch((err) => console.log(err)); const filteredSheep = computed(function () { const query = searchQuery.value.toLowerCase(); return searchTag.value === "breed" ? allSheep.value.filter((el) => el.breed.breed_name.includes(query)) : allSheep.value.filter((el) => el[searchTag.value].toLowerCase().includes(query) ); }); function getSearchQuery(query) { searchQuery.value = query; } function setTag(key) { searchTag.value = key === "tag" ? (key = "tag_id") : key; searchQuery.value = ""; } function handleOpenForm() { formOpen.value = true; } function updateData(data) { allSheep.value = [...allSheep.value, data]; } function deleteSheep(id) { allSheep.value = allSheep.value.filter((el) => { el.sheep_id !== id; }); } return { allSheep: filteredSheep, getSearchQuery, setTag, handleOpenForm, updateData, formOpen, searchQuery, searchTag, deleteSheep, }; }, }; </script>Todo lo que necesitaba hacer era reemplazar las llaves con paréntesis:
function deleteSheep(id) { allSheep.value = allSheep.value.filter((el) => ( el.sheep_id !== id; ) ); }