AI原生前端开发(040):AI驱动的组件设计与开发

前言

组件是前端开发的基石!AI可以帮我们设计和开发高质量的组件!


1. AI辅助组件设计流程

1.1 组件需求 → 完整组件

javascript 复制代码
/* 提示词:
"设计一个任务卡片组件,需求:
1. 显示任务标题、描述、截止日期、状态
2. 支持编辑、删除、完成操作
3. 响应式设计
4. 使用Tailwind CSS
5. React 19 + TypeScript"
*/

// AI生成的完整组件
import { useState } from 'react';

interface Task {
  id: string;
  title: string;
  description?: string;
  dueDate?: Date;
  status: 'todo' | 'in-progress' | 'done';
}

interface TaskCardProps {
  task: Task;
  onEdit?: (task: Task) => void;
  onDelete?: (id: string) => void;
  onStatusChange?: (id: string, status: Task['status']) => void;
}

const statusStyles = {
  'todo': 'bg-yellow-100 text-yellow-800',
  'in-progress': 'bg-blue-100 text-blue-800',
  'done': 'bg-green-100 text-green-800'
};

const statusLabels = {
  'todo': '待办',
  'in-progress': '进行中',
  'done': '已完成'
};

export default function TaskCard({ 
  task, 
  onEdit, 
  onDelete, 
  onStatusChange 
}: TaskCardProps) {
  const [isEditing, setIsEditing] = useState(false);

  return (
    <div className={`p-4 border rounded-lg shadow-sm ${task.status === 'done' ? 'opacity-60' : ''}`}>
      {isEditing ? (
        <div className="space-y-3">
          <input
            defaultValue={task.title}
            className="w-full p-2 border rounded"
            placeholder="标题"
          />
          <textarea
            defaultValue={task.description}
            className="w-full p-2 border rounded"
            placeholder="描述"
            rows={2}
          />
          <div className="flex gap-2">
            <button
              onClick={() => setIsEditing(false)}
              className="px-3 py-1 bg-gray-200 rounded"
            >
              取消
            </button>
            <button
              onClick={() => setIsEditing(false)}
              className="px-3 py-1 bg-blue-600 text-white rounded"
            >
              保存
            </button>
          </div>
        </div>
      ) : (
        <div className="space-y-3">
          <div className="flex justify-between items-start">
            <h3 className={`font-bold ${task.status === 'done' ? 'line-through' : ''}`}>
              {task.title}
            </h3>
            <span className={`px-2 py-1 text-xs rounded-full ${statusStyles[task.status]}`}>
              {statusLabels[task.status]}
            </span>
          </div>
          
          {task.description && (
            <p className="text-gray-600 text-sm">{task.description}</p>
          )}
          
          {task.dueDate && (
            <p className="text-xs text-gray-500">
              截止: {new Date(task.dueDate).toLocaleDateString()}
            </p>
          )}
          
          <div className="flex gap-2 pt-2 border-t">
            {onEdit && (
              <button
                onClick={() => setIsEditing(true)}
                className="text-sm text-blue-600 hover:underline"
              >
                编辑
              </button>
            )}
            {onStatusChange && task.status !== 'done' && (
              <button
                onClick={() => onStatusChange(task.id, 'done')}
                className="text-sm text-green-600 hover:underline"
              >
                完成
              </button>
            )}
            {onDelete && (
              <button
                onClick={() => onDelete(task.id)}
                className="text-sm text-red-600 hover:underline"
              >
                删除
              </button>
            )}
          </div>
        </div>
      )}
    </div>
  );
}

2. 组件设计原则

原则 说明
单一职责 一个组件只做一件事
可复用 组件设计为可复用
可扩展 组件易于扩展新功能
可测试 组件易于编写测试
类型安全 完善的TypeScript类型

3. 今日小结

这一篇我们学习了:

  1. AI辅助组件设计流程
  2. 组件设计原则

4. 下篇预告

下一篇,我们学习 AI辅助的状态管理(Zustand/Pinia)!

相关推荐
Rocky Ding*6 小时前
深入浅出Xiaomi-Lens-0技术解析:像素监督如何改变视觉推理
论文阅读·人工智能·深度学习·机器学习·aigc·多模态·ai-native
志尊宝1 天前
AI原生前端开发(039):AI辅助的Nuxt 4全栈开发
前端·vue.js·ai-native
志尊宝1 天前
AI原生前端开发(041):AI辅助的状态管理(Zustand/Pinia)
前端·javascript·ai-native
志尊宝1 天前
AI原生前端开发(038):AI辅助的Next.js 15全栈开发
javascript·人工智能·ai-native
HRaitest2 天前
秋招技术岗招聘提效:三类 AI 招聘方案的技术底层与选型逻辑
大数据·人工智能·求职招聘·ai-native
志尊宝2 天前
AI原生前端开发(035):AI时代的工程化最佳实践总结
人工智能·ai-native
Rocky Ding*2 天前
【三年面试五年模拟】2026-10-25 华为大模型算法岗一面面经:13道题解析与算法实现
论文阅读·人工智能·深度学习·机器学习·大模型·aigc·ai-native
志尊宝2 天前
AI原生前端开发(037):AI辅助的Vue 3开发最佳实践
前端·vue.js·ai-native
志尊宝3 天前
AI原生前端开发(025):端侧AI实战项目:智能笔记助手
人工智能·笔记·ai-native