reactjs - React-apollo-hooks useMutation

标签 reactjs graphql apollo

为什么“handleAdd”方法中的“addTodo”给我“方法表达式不是函数类型”?

    import React, {useState} from 'react';
    import useAddTodo from "../../hooks/todos/useAddTodo";

    function Home() {
        const [value, setValue] = useState('');
        const addTodo = useAddTodo();

        const handleChange = e => {
            setValue(e.target.value)
        };
        const handleAdd = e => {
            e.preventDefault();
            const todo = {
                title: value,
                status: false,
            };
            addTodo({
                variables: todo,
            })
        };
        return (
            <form onSubmit={handleAdd}>
                <input onChange={handleChange} value={value} type="text" placeholder="todo title"/>
                <input onClick={handleAdd} type="submit" value="add"/>
            </form>
        );
    }

    export default Home;

这是我的钩子(Hook)

import {useMutation} from 'react-apollo-hooks'
import AddTodoMutation from "./graphql/mutations/AddTodoMutation";

function useAddTodo() {
    return useMutation(AddTodoMutation);
}

export default useAddTodo

和我的突变

import gql from 'graphql-tag'

export const AddTodoMutation = gql`
    mutation AddTodoMutation($title: String! $status: Boolean!) {
        addTodo(title: $title status: $status) {
            _id
            title
            status
        }
    }
`

export default AddTodoMutation

你们能向我解释一下问题所在吗?我将不胜感激!

最佳答案

根据文档,useMutation返回一个数组(不是单个值)。

例如:

const [addTodo, { data }] = useMutation(ADD_TODO);

但是,您似乎正在返回并调用整个数组值。

要继续按原样使用自定义 Hook ,请尝试按如下方式更新它:

import {useMutation} from 'react-apollo-hooks'
import AddTodoMutation from "./graphql/mutations/AddTodoMutation";

function useAddTodo() {
   // Destructure the addTodo mutation
   const [addTodo] = useMutation(AddTodoMutation);
   // Return the value to continue using it as is in the other files
   return addTodo;
}

export default useAddTodo

关于reactjs - React-apollo-hooks useMutation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58089635/

相关文章:

javascript - GraphQL 错误 "fields must be an object with field names as keys or a function which returns such an object."

reactjs - 如何从 React 中的 Apollo 订阅组件刷新查询/缓存

javascript - GraphQL 如何做一个 JOIN 请求而不是许多顺序请求?

javascript - react-apollo 向组件提供数据和突变

javascript - 必须返回有效的 React 元素(或 null),但不返回

javascript - 为什么 graphql 不将我的数据注入(inject)到 React 组件 prop 中?

csv - 使用 GraphQL 机制,但返回 CSV

php - 如何在 GraphQL 中返回自定义错误

css - Ant 设计中的卡片漂浮在固定的导航栏上

reactjs - 导航差异(React Router v6)