From 57bb1ffab76c16661c63122b0daa56d5fb33ec9d Mon Sep 17 00:00:00 2001 From: gaoziman <2942894660@qq.com> Date: Mon, 22 Dec 2025 00:07:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=8A=B6=E6=80=81=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8F=90=E7=A4=BA=E8=AF=8D=E4=BC=98=E5=8C=96?= =?UTF-8?q?=20Provider?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 PromptOptimizerProvider 管理优化后提示词状态 - 提供 setOptimizedPrompt 和 consumeOptimizedPrompt 方法 - 实现优化结果到输入框的状态传递 - 导出相关 hooks 和组件 --- src/providers/PromptOptimizerProvider.tsx | 45 +++++++++++++++++++++++ src/providers/index.ts | 1 + 2 files changed, 46 insertions(+) create mode 100644 src/providers/PromptOptimizerProvider.tsx diff --git a/src/providers/PromptOptimizerProvider.tsx b/src/providers/PromptOptimizerProvider.tsx new file mode 100644 index 0000000..a7004a2 --- /dev/null +++ b/src/providers/PromptOptimizerProvider.tsx @@ -0,0 +1,45 @@ +'use client'; + +import { createContext, useContext, useState, useCallback, type ReactNode } from 'react'; + +interface PromptOptimizerContextType { + // 优化后的提示词(用于填入输入框) + optimizedPrompt: string | null; + // 设置优化后的提示词 + setOptimizedPrompt: (prompt: string | null) => void; + // 消费优化后的提示词(获取后清空) + consumeOptimizedPrompt: () => string | null; +} + +const PromptOptimizerContext = createContext(null); + +export function PromptOptimizerProvider({ children }: { children: ReactNode }) { + const [optimizedPrompt, setOptimizedPrompt] = useState(null); + + // 消费优化后的提示词(获取后清空,避免重复使用) + const consumeOptimizedPrompt = useCallback(() => { + const prompt = optimizedPrompt; + setOptimizedPrompt(null); + return prompt; + }, [optimizedPrompt]); + + return ( + + {children} + + ); +} + +export function usePromptOptimizer() { + const context = useContext(PromptOptimizerContext); + if (!context) { + throw new Error('usePromptOptimizer must be used within a PromptOptimizerProvider'); + } + return context; +} diff --git a/src/providers/index.ts b/src/providers/index.ts index 662ea48..5d51b45 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -1 +1,2 @@ export { AuthProvider, useAuth, type AuthUser } from './AuthProvider'; +export { PromptOptimizerProvider, usePromptOptimizer } from './PromptOptimizerProvider';