es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

createSelector está devolviendo su función equalityCheck en lugar del valor.

Por el bien de entender mejor createSelector, estoy intentando usarlo en lugar de useSelector.

const domainEntitlements = useSelector((state) => state.objects.domainEntitlements[match.params.id]);
const domainEntitlement = createSelector((state) => state.objects.domainEntitlements, (domainEntitlements) => (domainEntitlements));
  console.log(domainEntitlements, domainEntitlement);

El useSelector registra un objeto (correcto), pero el createSelector registra una función de equalityCheck.

¿Estoy haciendo algo muy estúpido o por qué puedo obtener los datos con useSelector y no con createSelector?

enter image description here

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema en el código es que la función createSelector está siendo llamada con dos argumentos, cuando debería ser llamada con una matriz de selectores de entrada (o funciones que extraen segmentos de datos específicos del estado) como primer argumento, seguido de la función de salida como segundo argumento.

    En el fragmento de código dado, el segundo argumento debe ser movido a una línea separada de la siguiente manera:

    const domainEntitlement = createSelector(
      (state) => state.objects.domainEntitlements,
      (domainEntitlements) => domainEntitlements[match.params.id]
    );
    
    console.log(domainEntitlements, domainEntitlement); 
    

    Esto creará correctamente un selector que extrae el segmento domainEntitlements del estado y devuelve el objeto específico correspondiente a match.params.id. La declaración console.log debería entonces registrar el objeto correcto.

Comments are closed.