Thư mục/tập tin | Mục đích |
---|---|
pages/ | Chứa các trang web, ví dụ index.js |
components/ | Chứa các thành phần React tái sử dụng |
styles/ | Chứa các file style, bao gồm Tailwind CSS |
npm install tailwindcss postcss autoprefixernpx tailwindcss init -p
tailwind.config.js
để khai báo các đường dẫn đến file cần áp dụng Tailwind:module.exports = { content: [ "./pages/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}" ], theme: { extend: {}, }, plugins: [],}
styles/globals.css
như sau:@tailwind base;@tailwind components;@tailwind utilities;
pages/_app.js
để import file CSS:import '../styles/globals.css'
function MyApp({ Component, pageProps }) { return <Component {...pageProps} />}
export default MyApp
components/ImageGenerator.js
với nội dung:import { useState } from 'react'
export default function ImageGenerator() { const [prompt, setPrompt] = useState('') const [imageUrl, setImageUrl] = useState('')
const handleGenerateImage = async () => { // Gọi API tạo ảnh AI tại đây // Ví dụ giả lập kết quả const response = { imageUrl: 'https://via.placeholder.com/512', } setImageUrl(response.imageUrl) }
return ( <div className="max-w-xl mx-auto mt-10"> <h1 className="text-2xl font-bold mb-4">NSFW AI Image Generator</h1> <textarea className="w-full p-2 border border-gray-300 rounded mb-4" rows="4" placeholder="Nhập mô tả" value={prompt} onChange={(e) => setPrompt(e.target.value)} /> <button onClick={handleGenerateImage} className="px-4 py-2 bg-blue-600 text-white rounded" > Tạo Ảnh </button> {imageUrl && ( <div className="mt-6"> <img src={imageUrl} alt="Generated" className="w-full h-auto" /> </div> )} </div> )}
pages/index.js
như sau để sử dụng component mới:import ImageGenerator from '../components/ImageGenerator'
export default function Home() { return ( <div> <ImageGenerator /> </div> )}
const handleGenerateImage = async () => { const isSafe = await checkPromptForNSFW(prompt) if (!isSafe) { alert('Nội dung mô tả không phù hợp!') return } // Tiến hành gọi API tạo ảnh nếu an toàn}
async function checkPromptForNSFW(prompt) { // Gọi API kiểm duyệt thực tế, ở đây giả lập luôn trả về true return true}
npm run dev
http://localhost:3000
để trải nghiệm.