- Trang chủ
- Hướng dẫn học
- Hướng dẫn học React.js
- React.js project component
React.js project component
- Ở bài học trước ta đã biết cách kết nối các dữ liệu trong component của một project React, tiếp tục với bài học này, ta sẽ tiến hành cập nhật [thay đổi] dữ liệu.
- Nội dung chuẩn bị:
- Cài đặt để chạy được project React.js, xem lại phần Cài đặt React.js
- Template mẫu, các bạn download tại HWC template cơ bản
- Ta sẽ thực hiện các bước sau:
- Đưa template mẫu vào project React.
- Phân tích các component trong template mẫu.
- Tách template mẫu ra thành từng component.
- Kết nối các component lại với nhau.
Đưa template mẫu vào project React
- Sau khi cài đặt xong React ta sẽ có project
react-project
với cấu trúc thư mục như sau:
react-project
node_modules
- ...
public
- index.html
- ...
index.html
- src
- .gitignore
- package.json
- package-lock.json
- README.md
- Trong template mẫu, có 2 file chính, là
import React from 'react'; import './App.css'; function App[] { return [
0 vàHEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
import React from 'react'; import './App.css'; function App[] { return [
1, nhiệm vụ của ta là làm sao cho nội dung của template mẫu này hiển thị thông qua project React.HEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
- Để làm được việc đó, ta lần lượt thực hiện như sau:
- Copy nội dung code bên trong
import React from 'react'; import './App.css'; function App[] { return [
2 của template thay thế code bên trongHEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
import React from 'react'; import './App.css'; function App[] { return [
3.HEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
-
-
- Copy nội dung phần
import React from 'react'; import './App.css'; function App[] { return [
4 của template thay thế cho nội dung bên trong phầnHEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
import React from 'react'; import './App.css'; function App[] { return [
5 củaHEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
import React from 'react'; import './App.css'; function App[] { return [
6.HEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
-
/src/App.css
/* Reset lại một vài thuộc tính */ * { margin: 0; padding: 0; } ol, ul { list-style: none; } img { border: none; vertical-align: top; } button { background-color: #3a95ea; border: 1px solid #2d87da; border-radius: 4px; color: #fff; cursor: pointer; padding: 8px 15px; } /* Nội dung layout */ #layout { margin: 20px auto; width: 1024px; } header, footer, aside, .box-list li { font-size: 30px; text-align: center; } header { background-color: #92dfc8; height: 80px; line-height: 80px; } main { display: flex; flex-wrap: wrap; } #content { margin-right: 20px; width: 754px; } #content h2 { font-size: 30px; background-color: #e9e9e9; padding: 5px 0 5px 10px; margin: 20px 0 30px; } #content .item-list h2 { margin-bottom: 10px; } #content .item-list div { margin-bottom: 30px; } aside { background-color: #f2d8ca; height: 400px; line-height: 400px; width: 250px; } .box-list { display: flex; margin-top: 10px; } .box-list li { background-color: #f2f1ca; height: 150px; line-height: 150px; text-align: center; margin-right: 10px; margin-bottom: 10px; width: 248.5px; } .box-list li:last-child { margin-right: 0; } footer { background-color: #eecbf3; height: 80px; line-height: 80px; }
/src/App.js
- Khi này ta có:
import React from 'react';
import './App.css';
function App[] {
return [
HEADER
Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis.
-
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum.
-
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
ASIDE
- Box 1
- Box 2
- Box 3
- Box 4
FOOTER
];
};
export default App;
- Khi đưa vào
import React from 'react'; import './App.css'; function App[] { return [
7, nhớ chuyển cấu trúc HTML sáng JSX [những vị trí màu đỏ bên dưới].HEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
-
- Chỉ cần thay thế 2 file như trên thôi, là ta đã đưa nội dung của template mẫu vào project React thành công.
Để chạy project, ta dùng lệnh import React from 'react';
import './App.css';
function App[] {
return [
HEADER
Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis.
-
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum.
-
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
ASIDE
- Box 1
- Box 2
- Box 3
- Box 4
FOOTER
];
};
export default App;
8 sẽ thấy được kết quả sau:
HEADER
ASIDE
];
};
export default App;
Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
- Phân tích component
- Phân tích ta thấy, mỗi ô màu đỏ bên dưới đây có thể xem là mỗi component:
- Theo đó ta lần lượt có các component như sau:
import React from 'react'; import './App.css'; function App[] { return [
9: là component chứa nội dung của phần header.HEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
-
import React from 'react'; const Header = [] => { return [ HEADER ] } export default Header;
0: là component chứa nội dung của "Big Title".import React from 'react'; const Header = [] => { return [ HEADER ] } export default Header;
1: là component chứa nội dung của nhóm "Title 01" cho tới "Title 03".import React from 'react'; const Header = [] => { return [ HEADER ] } export default Header;
2: là component chứa nội dung của phần sidebar.import React from 'react'; const Header = [] => { return [ HEADER ] } export default Header;
3: là component chứa nội dung danh sách "BOX".
Tách template mẫu ra thành từng component.
- Kết nối các component lại với nhau.
- Đưa template mẫu vào project React
react-project
node_modules
- ...
public
- index.html
- ...
index.html
src
- .gitignore
- package.json
- ...
- src
- .gitignore
- package.json
- package-lock.json
/src/components/Header.js
import React from 'react'; const Header = [] => { return [ HEADER ] } export default Header;
/src/components/Headline.js
import React from 'react'; const Headline = [] => { return [Big Title
] } export default Headline;
/src/components/ItemList.js
import React from 'react'; const ItemList = [] => { return [] } export default ItemList;
Title 01
Proin ex nunc, bibendum ut magna quis.Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum.Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
/src/components/Aside.js
import React from 'react'; const Aside = [] => { return [ ASIDE ] } export default Aside;
/src/components/BoxList.js
import React from 'react'; const BoxList = [] => { return [] } export default BoxList;
- Box 1
- Box 2
- Box 3
- Box 4
/src/components/Footer.js
import React from 'react'; const Footer = [] => { return [ FOOTER ] } export default Footer;
README.md
- Trong template mẫu, có 2 file chính, là
import React from 'react'; import './App.css'; function App[] { return [
0 vàHEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
import React from 'react'; import './App.css'; function App[] { return [
1, nhiệm vụ của ta là làm sao cho nội dung của template mẫu này hiển thị thông qua project React.HEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
-
/src/App.js
import React, { Component } from 'react'; import './App.css'; import Header from './components/Header'; import Headline from './components/Headline'; import ItemList from './components/ItemList'; import Aside from './components/Aside'; import BoxList from './components/BoxList'; import Footer from './components/Footer'; class App extends Component { render[] { return []; } } export default App;
- Để làm được việc đó, ta lần lượt thực hiện như sau:
- Copy nội dung code bên trong
import React from 'react'; import './App.css'; function App[] { return [
2 của template thay thế code bên trongHEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
import React from 'react'; import './App.css'; function App[] { return [
3.HEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
-
- Copy nội dung phần
import React from 'react'; import './App.css'; function App[] { return [
4 của template thay thế cho nội dung bên trong phầnHEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
import React from 'react'; import './App.css'; function App[] { return [
5 củaHEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
import React from 'react'; import './App.css'; function App[] { return [
6.HEADER]; }; export default App;Big Title
-
Title 01
Proin ex nunc, bibendum ut magna quis. -
Title 02
Blandit mollis orci. Ut pretium diam ut tristique interdum amet condimentum. -
Title 03
Donec ut libero pretium, efficitur nisl vel, sagittis elit.
- Box 1
- Box 2
- Box 3
- Box 4
-