Obtengo datos de useQuery . Y quiero ordenarlos por campo de datos directFeedNumber .
const { data: allFeedData, loading: allFeedLoading } = useQuery(SEE_ALL_FEED_ORDER); const FeedSort = allFeedData.seeAllFeedOrder.sort(function (a, b) { return a - b; }); Así que uso la función de sort para hacer esto, pero cuando FeedSort , dice Intento de asignar a la propiedad de solo lectura.
Entonces, ¿no puedo usar la función de sort con datos obtenidos de useQuery ?
Entonces, ¿cómo puedo ordenarlos? ¡¡Por favor, ayúdame!!
Array.sort altera la matriz original, a diferencia de otros métodos como Array.map que producen una nueva matriz.
Para evitar esto, podemos hacer una copia superficial de la matriz original.
Ejemplo:
const { data: allFeedData, loading: allFeedLoading } = useQuery(SEE_ALL_FEED_ORDER); const FeedSort = [...allFeedData.seeAllFeedOrder].sort(function (a, b) { return a - b; });Lo que hacemos aquí es crear una nueva matriz y llenarla con los valores de la matriz original usando la sintaxis extendida .
Luego ordenamos la matriz recién creada, que podemos modificar.
Nota: también hay otras formas de hacer copias superficiales, o copias profundas, de arreglos y objetos.
Aquí hay algunos otros ejemplos .