GitHub Actions创建Issue时如何动态填充表单字段?

百里丽君 阅读 55

在React组件里用GitHub Actions创建Issue时,表单内容无法动态更新。比如我通过表单输入标题和描述,但每次创建的Issue标题都是固定的”Test Issue”,无法替换成输入框的内容。

尝试过把输入值存到环境变量里,但Actions运行时显示未定义。代码逻辑是这样的:

function IssueForm() {
  const [title, setTitle] = useState('');
  const handleCreate = async () => {
    await fetch('/api/create-issue', {
      method: 'POST',
      body: JSON.stringify({ title })
    });
  };
  return (
    <form onSubmit={handleCreate}>
      <input value={title} onChange={e => setTitle(e.target.value)} />
      <button type="submit">Create</button>
    </form>
  );
}

后端API调用了octokit.rest.issues.create,但参数里的title始终是空字符串。是不是Actions的工作流程没正确接收变量?或者需要配置什么特定的步骤?

我来解答 赞 6 收藏
二维码
手机扫码查看
2 条解答
一玉霞
一玉霞 Lv1
问题出在前后端数据传递上,后端没正确解析前端传的title字段。直接这样改:

前端代码不用动,后端API改成这样:
const { Octokit } = require("@octokit/rest");
const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });

module.exports = async (req, res) => {
const { title } = req.body;
if (!title) return res.status(400).send("Title is required");

await octokit.rest.issues.create({
owner: "your-owner",
repo: "your-repo",
title: title
});

res.status(201).send("Issue created");
};


确保GitHub Actions工作流里调用API时正确传递了请求体,重点检查Content-Type是不是application/json。别忘了给Actions配好GITHUB_TOKEN权限。
点赞 1
2026-02-17 17:10
设计师星宇
你这个问题根本不是 GitHub Actions 的问题,而是搞混了前端、后端和 CI/CD 的执行环境。

GitHub Actions 是在服务端跑的自动化流程,跟你 React 组件里的输入框完全不在一个上下文。你在前端输入的内容,根本传不到 Actions 的 workflow 文件里,因为 Actions 的 yml 配置是静态的,运行时不会动态读取你网页表单的数据。

你现在用的是前端发请求到 /api/create-issue,后端用 Octokit 直接调 GitHub API 创建 issue,这压根就没走 GitHub Actions。所以别被误导了——你想动态填内容,不需要动 Actions,直接在后端 API 里处理就行。

你的后端代码大概是这样的:

app.post('/api/create-issue', async (req, res) => {
const { title } = req.body;
await octokit.rest.issues.create({
owner: 'your-username',
repo: 'your-repo',
title: title || 'Default Title'
});
res.json({ ok: true });
});


确保前端正确传了数据,fetch 里加个 headers: { 'Content-Type': 'application/json' },不然 body 可能解析不了。

总结:别折腾 Actions 动态字段了,那玩意不适合做这种事。你现在的做法是对的,问题出在前后端数据没传通,检查下 API 接收的 body 是否正常解析。数据库层面都不涉及,纯接口通信问题。
点赞 2
2026-02-09 08:04