feat(状态管理): 添加提示词优化 Provider
- 新增 PromptOptimizerProvider 管理优化后提示词状态 - 提供 setOptimizedPrompt 和 consumeOptimizedPrompt 方法 - 实现优化结果到输入框的状态传递 - 导出相关 hooks 和组件
This commit is contained in:
parent
31d227dca9
commit
57bb1ffab7
45
src/providers/PromptOptimizerProvider.tsx
Normal file
45
src/providers/PromptOptimizerProvider.tsx
Normal file
@ -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<PromptOptimizerContextType | null>(null);
|
||||||
|
|
||||||
|
export function PromptOptimizerProvider({ children }: { children: ReactNode }) {
|
||||||
|
const [optimizedPrompt, setOptimizedPrompt] = useState<string | null>(null);
|
||||||
|
|
||||||
|
// 消费优化后的提示词(获取后清空,避免重复使用)
|
||||||
|
const consumeOptimizedPrompt = useCallback(() => {
|
||||||
|
const prompt = optimizedPrompt;
|
||||||
|
setOptimizedPrompt(null);
|
||||||
|
return prompt;
|
||||||
|
}, [optimizedPrompt]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<PromptOptimizerContext.Provider
|
||||||
|
value={{
|
||||||
|
optimizedPrompt,
|
||||||
|
setOptimizedPrompt,
|
||||||
|
consumeOptimizedPrompt,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</PromptOptimizerContext.Provider>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function usePromptOptimizer() {
|
||||||
|
const context = useContext(PromptOptimizerContext);
|
||||||
|
if (!context) {
|
||||||
|
throw new Error('usePromptOptimizer must be used within a PromptOptimizerProvider');
|
||||||
|
}
|
||||||
|
return context;
|
||||||
|
}
|
||||||
@ -1 +1,2 @@
|
|||||||
export { AuthProvider, useAuth, type AuthUser } from './AuthProvider';
|
export { AuthProvider, useAuth, type AuthUser } from './AuthProvider';
|
||||||
|
export { PromptOptimizerProvider, usePromptOptimizer } from './PromptOptimizerProvider';
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user