Estoy trabajando en una aplicación MERNG de pila completa de redes sociales con Apollo GraphQL y me encontré con una "Llamada de gancho no válida. Los ganchos solo se pueden llamar dentro del cuerpo de un componente de función". error.
Esta es la primera vez que trabajo con React y componentes de reacción y he estado revisando muchas publicaciones de StackOverflow y alguna documentación sobre las Reglas de ganchos y la descripción general de ganchos en el sitio web de documentación de React, pero todavía tengo algunos problemas para tratar de resolver el problema.
Aquí está mi código:
EliminarBotón.js
import React, { useState } from 'react' import gql from 'graphql-tag' import { useMutation } from '@apollo/react-hooks' import { Button, Confirm, Icon } from 'semantic-ui-react' function DeleteButton({ postID }) { const [confirmOpen, setConfirmOpen] = useState(false) const [deletePost] = useMutation(DELETE_POST_MUTATION, { update() { setConfirmOpen(false) // TODO: Remove post from cache }, variables: { postID } }) return ( <> <Button as='div' color='red' floated='right' onClick={() => setConfirmOpen(true)} > <Icon name='trash' style={{ margin: 0 }}/> </Button> <Confirm open={confirmOpen} onCancel={() => setConfirmOpen(false)} onConfirm={deletePost} /> </> ) } const DELETE_POST_MUTATION = gql` mutation deletePost($postID: ID!) { deletePost(postID: $postID) } ` export default DeleteButtonEn lo que estoy trabajando aquí es en la funcionalidad del cliente donde el usuario puede eliminar su publicación y se encuentra con una ventana de confirmación "setConfirmOpen (booleano)": "¿Está seguro? Sí No", cuando presiona el botón Eliminar para la publicación ( solo si el usuario realmente hizo esa publicación).
Miré https://reactjs.org/docs/hooks-overview.html#state-hook para ayudar a guiar mi interacción prevista con el botón Eliminar.
Lo reduje a onClick={() => setConfirmOpen(true)} causando mi error cuando hago clic en el botón Eliminar para eliminar la publicación de la base de datos usando una mutación de GraphQL y asumo que onCancel arrojará un error también.
Gracias por su tiempo y consideración.