GitHub Actions创建Issue时如何动态填充表单字段?
在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的工作流程没正确接收变量?或者需要配置什么特定的步骤?
前端代码不用动,后端API改成这样:
确保GitHub Actions工作流里调用API时正确传递了请求体,重点检查Content-Type是不是application/json。别忘了给Actions配好GITHUB_TOKEN权限。
GitHub Actions 是在服务端跑的自动化流程,跟你 React 组件里的输入框完全不在一个上下文。你在前端输入的内容,根本传不到 Actions 的 workflow 文件里,因为 Actions 的 yml 配置是静态的,运行时不会动态读取你网页表单的数据。
你现在用的是前端发请求到
/api/create-issue,后端用 Octokit 直接调 GitHub API 创建 issue,这压根就没走 GitHub Actions。所以别被误导了——你想动态填内容,不需要动 Actions,直接在后端 API 里处理就行。你的后端代码大概是这样的:
确保前端正确传了数据,fetch 里加个
headers: { 'Content-Type': 'application/json' },不然 body 可能解析不了。总结:别折腾 Actions 动态字段了,那玩意不适合做这种事。你现在的做法是对的,问题出在前后端数据没传通,检查下 API 接收的 body 是否正常解析。数据库层面都不涉及,纯接口通信问题。