Real-time Updates trong ReactJS
Trong bài tập này, mình sẽ sử dụng WebSocket hoặc một cơ chế real-time khác để cập nhật tự động dữ liệu từ API khi có sự thay đổi từ phía máy chủ.
Mình sẽ tiếp tục phát triển ứng dụng của mình bằng cách tích hợp tính năng real-time updates vào.
Bước 1: Tạo kết nối WebSocket
Trong component App.js
, mình sẽ tạo một kết nối WebSocket với máy chủ và lắng nghe các sự kiện để cập nhật dữ liệu khi có thay đổi.
// src/App.js import React, { useState, useEffect } from 'react'; import axios from 'axios'; import './App.css'; function App() { const [data, setData] = useState([]); useEffect(() => { const fetchData = async () => { const response = await axios.get('https://example.com/api/data'); setData(response.data); // Tạo kết nối WebSocket const ws = new WebSocket('wss://example.com/ws'); // Lắng nghe sự kiện khi có dữ liệu mới từ máy chủ ws.onmessage = event => { const newData = JSON.parse(event.data); setData(newData); }; // Đóng kết nối khi component bị hủy return () => { ws.close(); }; }; fetchData(); }, []); return ( <div className="App"> <h1>Real-time Updates</h1> <ul> {data.map(item => ( <li key={item.id}>{item.name}</li> ))} </ul> </div> ); } export default App;
Bước 2: Cấu hình WebSocket phía máy chủ
Trên phía máy chủ, bạn cần cấu hình WebSocket để lắng nghe và truyền dữ liệu khi có sự thay đổi.
// Server-side WebSocket configuration const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', ws => { ws.on('message', message => { // Xử lý và trả lời yêu cầu từ client (nếu cần) }); // Gửi dữ liệu mới cho tất cả client khi có sự thay đổi setInterval(() => { const newData = generateData(); // Hàm này tạo dữ liệu mới wss.clients.forEach(client => { if (client.readyState === WebSocket.OPEN) { client.send(JSON.stringify(newData)); } }); }, 1000); });
Kết quả:
Dữ liệu sẽ được cập nhật tự động trên giao diện người dùng khi có sự thay đổi từ phía máy chủ. Khi có sự thay đổi từ máy chủ, dữ liệu mới sẽ được gửi đến client và cập nhật tự động trên giao diện người dùng mà không cần phải làm mới trang.
Kết bài
Trong bài tập này, mình đã học cách tích hợp real-time updates trong ứng dụng ReactJS bằng cách sử dụng WebSocket. Bằng cách này, ứng dụng của mình có thể tự động cập nhật dữ liệu từ máy chủ mỗi khi có sự thay đổi, cải thiện trải nghiệm người dùng và giữ cho thông tin luôn luôn được cập nhật.
Bài giải
-------------------- ######## --------------------
Câu hỏi thường gặp liên quan:
- Fetching Data from API trong ReactJS
- Displaying Details trong ReactJS
- Searching Data trong ReactJS
- Pagination trong ReactJS
- Loading Indicator trong ReactJS
- Error Handling trong ReactJS
- Form Submission trong ReactJS
- Authentication trong ReactJS
- Deleting Data trong ReactJS
- File Upload trong ReactJS
- Real-time Updates trong ReactJS
- External APIs Integration trong ReactJS
- Rate Limiting và Throttling trong ReactJS