首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应-阿波罗-钩子useMutation

反应-阿波罗-钩子useMutation
EN

Stack Overflow用户
提问于 2019-09-25 00:24:40
回答 1查看 1.2K关注 0票数 2

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

代码语言:javascript
复制
    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;

这是我的钩子

代码语言:javascript
复制
import {useMutation} from 'react-apollo-hooks'
import AddTodoMutation from "./graphql/mutations/AddTodoMutation";

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

export default useAddTodo

我的突变

代码语言:javascript
复制
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

你们能给我解释一下问题出在哪里吗?我会很感激的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-25 00:59:50

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

例如:

代码语言:javascript
复制
const [addTodo, { data }] = useMutation(ADD_TODO);

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

若要继续以现有方式使用自定义钩子,请尝试按以下方式更新:

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58089635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档