peri hoki perihoki clarustologistics rimashaop.com angelpaintingtools.co.in vrjanaenergies.com gates of olympus perihoki jadi mesin uang paling gacor trik main baccarat perihoki ala pro bikin pemula jadi jutawan pantang pulang sebelum jackpot main dadu sicbo perihoki pgsoft mahjong ways 2 muncul scatter merah tiap spin perihoki cara menciptakan akun perihokigacor mahjong wins 3 jackpot kembar mahjong wins 3 abc1131 cara menang stabil rtp mahjong ways abc1131 bu nurlina menang 197 juta mahjong ways 2 mahasiswa cuan 421 juta karena pola mahjong pemilik warung menang 128 juta mahjong wins 3 strategi bravy erika mahjong abc1131 terungkap pemuda jambi taklukkan mahjong wins 3 penjual jamu menang besar mahjong wins 5 pemuda kampung raup 180 juta mahjong ways kisah inspiratif petani mahjong ways keberhasilan mahasiswa menang 92 juta mahjong ways modal warung kopi bang ojak sukses mahjong ways tanpa modal maxwin mahjong wins 3 strategi bocoran mahjong ways spin kombinasi cara bermain mahjong untuk meraih keberuntungan keajaiban mahjong kasir indomaret sukses beli tanah meraup keuntungan maksimal di mahjong wins rahasia kemenangan mahjong ways spin slow
A PHP Error was encountered
Severity: Warning
Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time
Filename: Session/Session.php
Line Number: 282
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent
Filename: Session/Session.php
Line Number: 294
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time
Filename: Session/Session.php
Line Number: 304
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time
Filename: Session/Session.php
Line Number: 314
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time
Filename: Session/Session.php
Line Number: 315
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time
Filename: Session/Session.php
Line Number: 316
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time
Filename: Session/Session.php
Line Number: 317
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time
Filename: Session/Session.php
Line Number: 375
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time
Filename: drivers/Session_files_driver.php
Line Number: 108
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: session_set_save_handler(): Cannot change save handler when headers already sent
Filename: Session/Session.php
Line Number: 110
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: session_start(): Cannot start session when headers already sent
Filename: Session/Session.php
Line Number: 143
Backtrace:
File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct
File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once
File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once
Tạo một component MultiStepForm trong ReactJS
REACTJS EXAMPLE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Tạo một component MultiStepForm trong ReactJS
Trong bài này, mình sẽ tạo một component MultiStepForm
chứa một biểu mẫu với nhiều bước. Người dùng có thể điều hướng qua các bước và thông tin đã nhập sẽ được hiển thị trong console khi hoàn thành.
Multi-Step Form trong ReactJS
Mình sẽ bắt đầu bằng việc tạo một ứng dụng React mới và thêm component MultiStepForm
vào đó.
Bước 1: Tạo một ứng dụng React mới
npx create-react-app react-multi-step-form
cd react-multi-step-form
Bước 2: Tạo component MultiStepForm
Trong thư mục src, tạo một file mới có tên là MultiStepForm.js.
File này sẽ chứa component MultiStepForm
.
MultiStepForm.js
import React, { useState } from 'react';
import './MultiStepForm.css';
const MultiStepForm = () => {
const [step, setStep] = useState(1);
const [formData, setFormData] = useState({
firstName: '',
lastName: '',
email: '',
password: '',
address: '',
city: '',
state: '',
zip: '',
});
const handleChange = (e) => {
const { name, value } = e.target;
setFormData({
...formData,
[name]: value,
});
};
const nextStep = () => {
setStep(step + 1);
};
const prevStep = () => {
setStep(step - 1);
};
const handleSubmit = (e) => {
e.preventDefault();
console.log('Thông tin đã nhập:', formData);
// Thêm logic xử lý thông tin đã nhập ở đây (ví dụ: gửi đến API, lưu vào state, ...)
};
const renderForm = () => {
switch (step) {
case 1:
return (
<div className="step-form">
<h2>Bước 1: Thông Tin Cá Nhân</h2>
<label>
Họ:
<input
type="text"
name="firstName"
value={formData.firstName}
onChange={handleChange}
required
/>
</label>
<br />
<label>
Tên:
<input
type="text"
name="lastName"
value={formData.lastName}
onChange={handleChange}
required
/>
</label>
<br />
<label>
Email:
<input
type="email"
name="email"
value={formData.email}
onChange={handleChange}
required
/>
</label>
<br />
<button onClick={nextStep}>Tiếp Theo</button>
</div>
);
case 2:
return (
<div className="step-form">
<h2>Bước 2: Địa Chỉ</h2>
<label>
Địa Chỉ:
<input
type="text"
name="address"
value={formData.address}
onChange={handleChange}
required
/>
</label>
<br />
<label>
Thành Phố:
<input
type="text"
name="city"
value={formData.city}
onChange={handleChange}
required
/>
</label>
<br />
<label>
Tỉnh/Thành Phố:
<input
type="text"
name="state"
value={formData.state}
onChange={handleChange}
required
/>
</label>
<br />
<label>
Mã Zip:
<input
type="text"
name="zip"
value={formData.zip}
onChange={handleChange}
required
/>
</label>
<br />
<button onClick={prevStep}>Quay Lại</button>
<button onClick={nextStep}>Tiếp Theo</button>
</div>
);
case 3:
return (
<div className="step-form">
<h2>Bước 3: Mật Khẩu</h2>
<label>
Mật Khẩu:
<input
type="password"
name="password"
value={formData.password}
onChange={handleChange}
required
/>
</label>
<br />
<button onClick={prevStep}>Quay Lại</button>
<button onClick={handleSubmit}>Hoàn Thành</button>
</div>
);
default:
return null;
}
};
return (
<div className="multi-step-form-container">
<form onSubmit={handleSubmit}>
{renderForm()}
</form>
</div>
);
};
export default MultiStepForm;
Bước 3: Tạo file CSS cho MultiStepForm
Tạo một file CSS mới có tên là MultiStepForm.css
trong thư mục src để trang trí giao diện của MultiStepForm
.
MultiStepForm.css
.multi-step-form-container {
max-width: 400px;
margin: auto;
padding: 20px;
border: 1px solid #ccc;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.step-form {
margin-bottom: 20px;
}
label {
display: block;
margin-bottom: 8px;
}
input,
textarea {
width: 100%;
padding: 8px;
margin-bottom: 16px;
border: 1px solid #ccc;
border-radius: 4px;
}
button {
background-color: #3498db;
color: white;
padding: 10px 15px;
border: none;
border-radius: 4px;
cursor: pointer;
margin-right: 10px;
}
button:hover {
background-color: #2980b9;
}
Bước 4: Sử dụng component MultiStepForm trong App
Sửa nội dung file src/App.js
để sử dụng component MultiStepForm.
App.js
import React from 'react';
import MultiStepForm from './MultiStepForm';
function App() {
return (
<div className="App">
<h1>React Multi-Step Form Exercise</h1>
<MultiStepForm />
</div>
);
}
export default App;
Bước 5: Chạy ứng dụng React
Quay lại terminal và chạy lệnh sau để khởi động ứng dụng React:
Mở trình duyệt và truy cập http://localhost:3000 để xem ứng dụng của bạn. Bạn sẽ thấy một biểu mẫu với nhiều bước và có thể điều hướng qua các bước. Khi bạn hoàn thành biểu mẫu và nhấn nút "Hoàn Thành", thông tin đã nhập sẽ hiển thị trong console.
Với bài tập "Multi-Step Form" này,mình đã tạo một biểu mẫu với nhiều bước và sử dụng Controlled Components
để quản lý trạng thái của từng bước. CSS đã được kết hợp để tạo ra giao diện thân thiện và dễ sử dụng. Hãy tiếp tục tìm hiểuvà thực hành để làm quen với các tính năng khác của ReactJS và phát triển kỹ năng lập trình của bạn!
Bài giải
-------------------- ######## --------------------
Câu hỏi thường gặp liên quan:
Cùng chuyên mục: