graphql - 如何解决 "Payload is not serializable: Converting circular structure to JSON"错误?

标签 graphql apollo apollo-client

如何解决“有效负载不可序列化:将循环结构转换为 JSON”错误?

我目前正在探索 Apollo、GraphQL 和 Material-UI。我从来没有遇到过这个错误,并且一直在通过 Stack Overflow 和博客文章寻找解决方案。

我一直在阅读有关循环结构的资料,但无法在我当前的代码库中找到任何内容。

我是否需要对进入 createLink 的变量进行字符串化?

完整错误信息:

Network request failed. Payload is not serializable: Converting circular structure to JSON
    --> starting at object with constructor 'HTMLInputElement'
    |     property '__reactFiber$b12dhgch1cn' -> object with constructor 'FiberNode'
    --- property 'stateNode' closes the circle

LinkList.js:

export default function LinkList() {
  const classes = useStyles();
  const { loading, error, data } = useQuery(LINK_QUERY);

  if (loading) {
    return (
      <Typography component={"span"}>
        <span className={classes.grid}>Fetching</span>
      </Typography>
    );
  }

  if (error) {
    return (
      <Typography component={"span"}>
        <span className={classes.grid}>Error! ${error.message}</span>;
      </Typography>
    );
  }

  const linksToRender = data.allLinks;

  return (
    <Typography component={"span"}>
      <div className={classes.root}>
        <Box className={classes.box}>
          {linksToRender.map((link, index) => (
            <Link
              className={classes.link}
              key={link.id}
              link={link}
              index={index}
            />
          ))}
        </Box>
      </div>
    </Typography>
  );
}

CreateLink.js:

export default function CreateLink() {
  const [state, setState] = useState({
    slug: "",
    description: "",
    link: ""
  });

  const classes = useStyles();

  function handleChange(e) {
    const value = e.target.value;
    setState({
      ...state,
      [e.target.name]: value
    });
  }

  const [createLink] = useMutation(CREATE_LINK);
  function handleSubmit(e) {
    e.preventDefault();
    console.log(state.slug);
    createLink({
      variables: {
        slug: state.slug,
        description: state.description,
        link: state.link
      }
    });
    setState({
      slug: "",
      description: "",
      link: ""
    });
  }

  return (
    <Grid container className={classes.root}>
      <form onSubmit={handleSubmit}>
        <Grid item>
          <TextField
            className={classes.textfield}
            inputProps={{ maxLength: 12 }}
            id="slug"
            name="slug"
            label="Link Alias"
            variant="outlined"
            type="text"
            value={state.slug}
            onChange={handleChange}
          />
        </Grid>
        <Grid item>
          <TextField
            required
            className={classes.textfield}
            id="description"
            name="description"
            label="Description"
            variant="outlined"
            type="text"
            value={state.description}
            onChange={handleChange}
          />
        </Grid>
        <Grid item>
          <TextField
            required
            className={classes.textfield}
            id="link"
            name="link"
            label="URL"
            variant="outlined"
            type="text"
            value={state.link}
            onChange={handleChange}
          />
        </Grid>
        <Grid item>
          <Button variant="outlined" type="submit" className={classes.button}>
            Shorten URL
          </Button>
        </Grid>
      </form>
    </Grid>
  );
}

感谢您查看问题。

最佳答案

该错误可能是由于 variables 对象中的 undefined 属性值传递给 createLink() 引起的。

createLink({
    variables: {
      slug: state.slug,
      description: state.description,
      link: state.link
    }
})

关于graphql - 如何解决 "Payload is not serializable: Converting circular structure to JSON"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65152638/

相关文章:

javascript - 数组或迭代器中的每个 child 都应该有一个唯一的 "key" Prop (使用 Rails 和 React)

node.js - Apollo,Sequelize - 简单的 `belongsTo` 关联返回 null

graphql - @client Apollo GQL 标签中断查询

node.js - 在实现react-relay时无法读取未定义的属性 'after'

node.js - Gatsby - GraphQL - StaticQuery 标签 - 由于查询字符串的奇怪行为,站点无法编译

graphql - 用户特定的发布(订阅)

reactjs - 如何修复 `Warning: Text content did not match. Server: "一些数据“客户端: "Loading..."`

reactjs - Apollo 的 proxy.writeQueries 清空缓存(是否有错误?)

java - Apollo 客户端无法连接到 GraphQL 服务器(http 调用执行失败)

node.js - 聚合函数返回 null GraphQL