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.

Función dinámica en React

Tengo los siguientes métodos bajo API_SERVICE.

export const API_SERVICE = {
  post: post,
  get: get,
  put: put,
  patch: patch
};

Exporta el método anterior desde API_SERVICE.

Entonces, SI quiero hacer una publicación, llamaré a lo siguiente:

API_SERVICE.post(url, data) / API_SERVICE.patch(url, data)

Aquí mi pregunta es que tengo un formulario para actualizar y crear. Ambas funciones son iguales. Quiero reutilizar este código.

¿Cómo llamar a estos métodos de forma dinámica?

Aquí se muestra el error:

[isEdit ? API_SERVICE.patch : API_SERVICE.post](url, data).then(response => ....

Error: (valor intermedio) no es una función

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para llamar a los métodos dinámicamente, puedes utilizar la notación de corchetes cuadrados con un operador ternario como se muestra en tu código. Sin embargo, el mensaje de error sugiere que el valor utilizado entre los corchetes cuadrados no es una función.

    Una posibilidad es que isEdit no esté definido o no sea un valor booleano. Asegúrate de que esté correctamente definido y se evalúe como true o false.

    Otra posibilidad es que los métodos de API_SERVICE no se estén exportando/importando correctamente. Asegúrate de que la exportación de los métodos sea correcta y que la declaración de importación también sea correcta, por ejemplo:

    // API_SERVICE.js
    const post = (url, data) => {
      // implementación de post
    };
    
    const patch = (url, data) => {
      // implementación de patch
    };
    
    export default {
      post,
      get,
      put,
      patch
    };
    
    // Tu archivo component.js
    import API_SERVICE from './API_SERVICE'; // Asegúrate de que la ruta relativa sea correcta
    
    // Uso de ejemplo
    const isEdit = true;
    const method = isEdit ? API_SERVICE.patch : API_SERVICE.post;
    method(url, data).then(response => {
      // manejar la respuesta
    });
    

    Si el error persiste, intenta imprimir en la consola isEdit, API_SERVICE.patch y API_SERVICE.post para depurar el problema.

Comments are closed.