Them trang Admin sinh JSON va chong Cache
This commit is contained in:
21
src/App.tsx
21
src/App.tsx
@@ -1,4 +1,5 @@
|
||||
import { useState, useEffect, useMemo } from 'react';
|
||||
import Admin from './Admin'; // <-- THÊM DÒNG IMPORT NÀY
|
||||
|
||||
// Định nghĩa kiểu dữ liệu cho Video bài tập
|
||||
interface ExerciseVideo {
|
||||
@@ -9,15 +10,16 @@ interface ExerciseVideo {
|
||||
youtube_id: string;
|
||||
}
|
||||
|
||||
function App() {
|
||||
// BƯỚC 1: Đổi tên App cũ của bạn thành MainApp
|
||||
function MainApp() {
|
||||
const [videos, setVideos] = useState<ExerciseVideo[]>([]);
|
||||
const [selectedVideo, setSelectedVideo] = useState<ExerciseVideo | null>(null);
|
||||
const [activeCategory, setActiveCategory] = useState<string>('All');
|
||||
const [loading, setLoading] = useState<boolean>(true);
|
||||
|
||||
// Lấy dữ liệu từ file data.json
|
||||
// Lấy dữ liệu từ thư mục con /data/ và chống Cache
|
||||
useEffect(() => {
|
||||
fetch('/data.json')
|
||||
fetch('/data/data.json?t=' + new Date().getTime())
|
||||
.then((res) => res.json())
|
||||
.then((data: ExerciseVideo[]) => {
|
||||
setVideos(data);
|
||||
@@ -140,4 +142,15 @@ function App() {
|
||||
);
|
||||
}
|
||||
|
||||
export default App;
|
||||
// BƯỚC 2: Tạo App mới làm người gác cổng kiểm tra URL
|
||||
function App() {
|
||||
const isAdmin = window.location.search.includes('admin=true');
|
||||
|
||||
if (isAdmin) {
|
||||
return <Admin />;
|
||||
}
|
||||
|
||||
return <MainApp />;
|
||||
}
|
||||
|
||||
export default App;
|
||||
Reference in New Issue
Block a user