WordPredictor 组件
词语预测组件,帮助儿童理解 AI 如何预测下一个词。
功能概述
- 预测练习: 选择句子中缺失的最佳词语
- AI 思维模拟: 展示 AI 的思考过程
- 即时反馈: 选择后立即显示正确/错误
- 解释说明: 提供正确答案的解释
- 状态持久化: 保存答题进度
Props 接口
interface WordPredictorProps {
title?: string; // 标题
instruction?: string; // 说明文字
sentence: string; // 句子(使用 ___ 表示空白)
options: string[]; // 选项数组
correctAnswer: string; // 正确答案
explanation: string; // 解释说明
aiThinking?: string; // AI 思考过程(可选)
successMessage?: string; // 成功消息
}
数据结构
保存的状态
interface SavedState {
selectedAnswer: string | null; // 选择的答案
submitted: boolean; // 是否已提交
}
交互流程
- 查看题目: 显示带空白的句子和选项
- 查看 AI 思考: 显示 AI 的思考过程
- 选择答案: 点击选择认为正确的选项
- 提交检查: 点击检查按钮
- 查看结果: 显示正确/错误和解释
- 重试或继续: 错误可以重试
使用示例
import { WordPredictor } from "@/components/kids/elements/word-predictor";
<WordPredictor
title="猜猜 AI 会说什么"
instruction="看看 AI 在想什么,然后选择正确的词"
sentence="今天天气很___,我们出去野餐吧"
options={["晴朗", "下雨", "寒冷", "多云"]
correctAnswer="晴朗"
explanation="因为后面说'出去野餐',晴朗的天气适合野餐"
aiThinking="人们在好天气时喜欢户外活动..."
successMessage="猜对了!你很懂 AI 的想法!"
/>
翻译键
{
"kids": {
"wordPredictor": {
"title": "🧠 词语预测器",
"instruction": "看看 AI 会怎么完成这个句子",
"aiThinks": "AI 正在思考...",
"thinkingDefault": "让我想想接下来应该说什么...",
"check": "检查答案",
"correct": "回答正确!",
"tryAgain": "再试一次"
}
}
}
状态样式
选项按钮
- 默认: 白色背景,靛蓝色边框
- 选中: 靛蓝色背景,边框加粗,放大效果
- 正确: 绿色背景,显示 ✓
- 错误: 红色背景,显示 ✗
空白显示
- 未提交: 黄色虚线边框
- 正确: 绿色实线边框
- 错误: 红色实线边框
完成判断
const isCorrect = selectedAnswer === correctAnswer;
// 如果正确,标记关卡完成
if (isCorrect && levelSlug) {
markSectionCompleted(levelSlug, currentSection);
markSectionComplete(currentSection);
}
样式说明
- 面板样式:
pixel-panel pixel-panel-indigo - 标题颜色:
#4338CA(靛蓝色) - AI 思考区: 浅蓝色背景 (
#F0F9FF)
像素边框
所有主要元素使用像素风格边框:
clipPath: "polygon(4px 0, calc(100% - 4px) 0, 100% 4px, 100% calc(100% - 4px), calc(100% - 4px) 100%, 4px 100%, 0 calc(100% - 4px), 0 4px)"
依赖
next-intl- 国际化@/lib/utils(cn)@/components/kids/providers/level-context@/lib/kids/progress
注意事项
- 需要包裹在
LevelProvider内使用 - 必须提供正确答案和解释
- 选项建议提供 2-4 个
- 句子中必须包含
___作为空白标记 - 正确回答后自动标记关卡进度