来自Apollo React的Formatting Mutation组件

时间:2019-06-05 08:16:45

标签: reactjs apollo tslint

React Apollo的正式文档显示了以下示例,将Mutations集成到React应用程序中。

在应用新的ts lint规则时,我注意到这段代码与 jsx-no-multiline-js 规则不兼容。

关闭此标志为打开选项,但是我个人觉得很难阅读 具有儿童功能的组件。因此,我正在寻找重新格式化此代码的方法。

有什么建议吗?

import gql from "graphql-tag";
import { Mutation } from "react-apollo";

const ADD_TODO = gql`
  mutation AddTodo($type: String!) {
    addTodo(type: $type) {
      id
      type
    }
  }
`;

const AddTodo = () => {
  let input;

  return (
    <Mutation mutation={ADD_TODO}>
      {(addTodo, { data }) => (
        <div>
          <form
            onSubmit={e => {
              e.preventDefault();
              addTodo({ variables: { type: input.value } });
              input.value = "";
            }}
          >
            <input
              ref={node => {
                input = node;
              }}
            />
            <button type="submit">Add Todo</button>
          </form>
        </div>
      )}
    </Mutation>
  );
};

1 个答案:

答案 0 :(得分:0)

来自the docs

  • 强制多行JSX表达式用括号包裹。
  • 左括号后必须换行。
  • 结束括号之前必须换行。

好像您在第一个<div>之前的左括号之前缺少新行

<Mutation mutation={ADD_TODO}>
  {(addTodo, { data }) => 
    (
      <div>
        <form
        onSubmit={e => {
          e.preventDefault();
          addTodo({ variables: { type: input.value } });
          input.value = "";
        }}>
        <input
          ref={node => {
            input = node;
          }}
        />
        <button type="submit">Add Todo</button>
      </form>
    </div>
  )}
  </Mutation>
相关问题