React简单例子

1、设置React项目

如果你还没有一个React项目,你可以使用Create React App来创建一个。

2、在你的React项目中,新建一个新的组件文件,比如Login.jsx,并编写以下代码:

javascript 复制代码
import React, {useState, useEffect} from 'react';
import '../Styles/Login.css'; //使用css来美化界面

const Login = () => {
    const [email, setEmail] = useState('') //使用状态来保存邮箱、密码、错误信息等值
    const [password, setPassword] = useState('')
    const [error, setError] = useState('')
    const [time, setTime] = useState(0)

    //增加一个effect,返回函数在组件销毁时执行
    useEffect(() => {
        const interval = setInterval(() => {
            setTime(a=>a+1)
        }, 1000)
        return () => {
            clearInterval(interval)
        }
    }, [])

    const handleSubmit = (e) => {
        e.preventDefault()
        console.log('email:', email);
        console.log('Password:', password);

        setError('Invalid credentials');

        setEmail('')
        setPassword('')
    };

    return (
        <div className="login-container">
            <h2>Login</h2>
            <div>停留时间:{time}秒</div>
            <form onSubmit={handleSubmit}>
                <div>
                    <label>Email:</label>
                    <input type="email" value={email} onChange={(e) => setEmail(e.target.value)} required/>
                </div>
                <div>
                    <label>Password:</label>
                    <input type="password" value={password} onChange={(e) => setPassword(e.target.value)} required/>
                </div>
                {error && <div className="error">{error}</div>}
                <button type="submit">Login</button>
            </form>
        </div>
    )
};

export default Login;

Login.css

css 复制代码
.login-container {
    max-width: 400px;
    margin: 50px auto; /* 增加顶部和底部的边距以提升居中效果 */
    padding: 30px; /* 增加内边距以使内容更加宽松 */
    border: 1px solid #ccc;
    border-radius: 15px; /* 增加圆角半径以使边框更加柔和 */
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.15); /* 增加阴影的模糊半径以使阴影更加自然 */
    background-color: #f9f9f9; /* 添加背景颜色以区分界面 */
}

.login-container h2 {
    text-align: center;
    margin-bottom: 30px; /* 增加与表单元素的距离 */
    color: #333; /* 设置标题颜色 */
    font-family: Arial, sans-serif; /* 设置字体 */
}

.login-container div {
    margin-bottom: 20px; /* 适当调整间距 */
}

.login-container label {
    display: block;
    margin-bottom: 10px;
    color: #555; /* 设置标签颜色 */
}

.login-container input {
    width: 100%;
    padding: 10px;
    box-sizing: border-box;
    border: 1px solid #ccc;
    border-radius: 5px;
    transition: border-color 0.3s; /* 添加过渡效果 */
}

.login-container input:focus {
    border-color: #007bff; /* 聚焦时改变边框颜色以提升用户体验 */
}

.login-container button {
    width: 100%;
    padding: 12px;
    background-color: #28a745;
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-size: 16px; /* 增大按钮字体 */
    transition: background-color 0.3s; /* 添加过渡效果 */
}

.login-container button:hover {
    background-color: #218838;
}

.error {
    color: red;
    text-align: center;
    margin-top: 20px; /* 适当调整间距 */
    font-size: 14px; /* 设置错误提示的字体大小 */
}

3、现在,你需要在你的应用中渲染这个登录组件。通常你会在App.js中做这件事:

javascript 复制代码
import React from 'react'
import Login from './Pages/Login.jsx'
import './App.css' //全局样式

function App() {
    return (
        <div className="App">
            <Login />
        </div>
    )
}

export default App;

4、确保你的开发服务器正在运行(npm start),然后在浏览器里访问页面。

相关推荐
福兮说4 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
凤城老人5 小时前
从 PyQt6 到 Electron:给 Edge TTS 做一个“多角色配音机“的踩坑手记
javascript·typescript·electron
Dovis(誓平步青云)5 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan6 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_7 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
yivifu8 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub
weixin_448290258 小时前
书庐开发实战教学
javascript·css·html
默_笙8 小时前
🛴 从散件到整机:DeepAgents 与 Agent 身上预留的那些"插槽"(前置介绍)
前端·javascript
一木 之林9 小时前
DeepSeek Agent 开发(一)
开发语言·前端·javascript
樱花落木兰11 小时前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存