使用 Hashnode API、Typescript 和 GraphQL 将博客文章添加到您的 React 站点
import { useMutation } from '@apollo/client';
import gql from 'graphql-tag';
// 定义GraphQL mutation
const CREATE_POST_MUTATION = gql`
mutation CreatePostMutation($input: PostInput!) {
createPost(input: $input) {
post {
id
title
contentMarkdown
author {
username
}
}
}
}
`;
// 使用React Hook定义函数组件
function PostCreator() {
const [createPost] = useMutation(CREATE_POST_MUTATION);
const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
const title = (document.getElementById('title') as HTMLInputElement).value;
const content = (document.getElementById('content') as HTMLTextAreaElement).value;
createPost({
variables: {
input: {
title,
contentMarkdown: content,
},
},
});
};
return (
<form onSubmit={handleSubmit}>
<label>
标题:
<input type="text" id="title" />
</label>
<label>
内容:
<textarea id="content" />
</label>
<button type="submit">发布</button>
</form>
);
}
export default PostCreator;
这段代码展示了如何使用Apollo Client的useMutation
Hook在React组件中创建一个简单的博客文章提交表单。它使用了GraphQL mutation来将文章数据发送到Hashnode的API,并且展示了如何处理表单提交事件。
评论已关闭