1: JSX
- JSX (javascript Syntax Extension- JS XML) viết theo kiểu XML. Thay thế cho React.createElement.
- JSX không phải là HTML.
- Có thể viết như HTML.
- thuộc tính class => className.
- Search google : HTML to JSX
- -magic.reacjs.net.
=> chuyển đổi mã lệnh html sang jsx:
https://magic.reactjs.net/htmltojsx.htm
- thực hành : hiển thị các biểu thức, các đối tượng. mã nguồn như HTML nhưng phải đươc bao bởi thẻ div ngoài cùng để mã JSX chạy được.
2: JSX mở rộng
- Sử dụng câu điều kiện để hiển thị.
- Hiển thị danh sách các đối tượng: sử dụng hàm map.
- Nếu báo lỗi key : thêm thuộc tính key là index của mảng.
3: Props
- là caccs thuộc tính của 1 component.
- truyền dữ liệu từ cha => con, theo dạng key**" Value"(Không đặt key == children).Value nhận vào có kiêu dữ liệu là kiểu chuổi. Bỏ trong dấu {} để truyền đúng kiểu dữ liệu.
- Nhận lại thông qua từ khóa : this.Props.key
Ví Dụ: Tạo một foder mới. nhúng bootstrap,node.js vào foder.
ở file app.js nhập mã nguồn: (Phần được bôi đậm)
<script type='text/javascript'> //<![CDATA[import Product from './Component/Product';class App extends Component{render() {return (<div><nav className="navbar navbar-inverse"><div className="container-fluid"><a className="navbar-brand">Props</a></div></nav><div className="container"><div className="row"><div className="row"><div className="col-xs-12 col-sm-12 col-md-12 col-lg-12"><Productname="Apple Iphone 7 Plus 32GB"price="8.000.000 VNĐ"image="https://znews-photo.zadn.vn/w660/Uploaded/ynssi/2016_08_16/1.png"/><Productname="Apple Iphone 8 Plus 32GB"price="10.000.000 VNĐ"image="https://manhinhdienthoai.net/wp-content/uploads/2019/07/iphone-8-plus-new.jpg"/><Productname="Apple Iphone 10 Plus 32GB"price="15.000.000 VNĐ"image="https://blogger.googleusercontent.com/img/proxy/AVvXsEhSiInrSMkoKB2eCDmIO6ff2AllzJrCO7HfNIJKl5wXxfCGgm7bb-BHj7brbnX0jm5nizCxfa03wT6ie6yLdufWQqAHOPFhHg531mZzMXBcIsHYIT7eLUtx_AkwDk8Cj_rTRgM-UJD5rMuw0nC2YY1UOnqYWlLHu2RBBIxvbwMO39uC0DxqKHMVhL082nz0tCGz="/></div></div></div></div></div>);}}export default App;//]]> </script>
Tạo tập tin Product.js cà nhập mã nguồn sau:(Phần được bôi đậm)
<script type='text/javascript'> //<![CDATA[import React, { Component} from 'react';class Product extends Component{render() {return (<div><div className="col-xs-4 col-sm-4 col-md-4 col-lg-4"><div className="thumbnail"><img alt={this.props.name} src={this.props.image}/><div className="caption"><h3>{ this.props.name}</h3><p>{this.props.price}</p><p><a className="btn btn-primary">Mua Ngay</a></p></div></div></div></div>);}}export default Product;//]]> </script>
=> chạy lại trên trình duyệt ta được kết quả :
- Nhận nội dung bên trong thẻ : this.Props.childrenVí Dụ: Tạo một foder mới. nhúng bootstrap,node.js vào foder.
ở file app.js nhập mã nguồn: (Phần được bôi đậm)
<script type='text/javascript'>
//<![CDATA[
import React, { Component} from 'react';
import logo from './logo.svg';
import './App.css';
import Product from './Component/Product';
class App extends Component{
render() {
return (
<div>
<nav className="navbar navbar-inverse">
<div className="container-fluid">
<a className="navbar-brand">Props</a>
</div>
</nav>
<div className="container">
<div className="row">
<div className="row">
<div className="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<Product
price="8.000.000 VNĐ"
image="https://znews-photo.zadn.vn/w660/Uploaded/ynssi/2016_08_16/1.png"
>Apple Iphone 7 Plus 32GB</Product>
<Product
price="10.000.000 VNĐ"
image="https://manhinhdienthoai.net/wp-content/uploads/2019/07/iphone-8-plus-new.jpg"
>Apple Iphone 8 Plus 32GB</Product>
<Product
price="15.000.000 VNĐ" image="https://blogger.googleusercontent.com/img/proxy/AVvXsEhSiInrSMkoKB2eCDmIO6ff2AllzJrCO7HfNIJKl5wXxfCGgm7bb-BHj7brbnX0jm5nizCxfa03wT6ie6yLdufWQqAHOPFhHg531mZzMXBcIsHYIT7eLUtx_AkwDk8Cj_rTRgM-UJD5rMuw0nC2YY1UOnqYWlLHu2RBBIxvbwMO39uC0DxqKHMVhL082nz0tCGz="
>Apple Iphone 10 Plus 32GB</Product>
</div>
</div>
</div>
</div>
</div>
);
}
}
export default App;
//]]>
</script>Tạo tập tin Product.js cà nhập mã nguồn sau:(Phần được bôi đậm)
<script type='text/javascript'> //<![CDATA[ import React, { Component} from 'react'; class Product extends Component{ render() { return ( <div> <div className="col-xs-4 col-sm-4 col-md-4 col-lg-4"> <div className="thumbnail"> <img alt={this.props.children} src={this.props.image}/> <div className="caption"> <h3> { this.props.children} </h3> <p> {this.props.price} </p> <p> <a className="btn btn-primary">Mua Ngay</a> </p> </div> </div> </div> </div> ); } } export default Product; //]]> </script>
=> chạy lại và xem kết quả
- Sử dụng điều kiện để hiển thị.
- Sử dụng function(ES6).
- Toán tử 3 ngôi.
- Sử dụng vòng lặp.
- Thực hành hiển thị danh sách sản phẩm (Tên , giá , trạng thái), chiir hiển thị sản phẩm có trạng thái là true.
Ví Dụ: Tạo một foder mới. nhúng bootstrap,node.js vào foder.
ở file app.js nhập mã nguồn: (Phần được bôi đậm)
<script type='text/javascript'>
//<![CDATA[
import React, { Component} from 'react';
import logo from './logo.svg';
import './App.css';
import Product from './Component/Product';
class App extends Component{
render() {
var product =[
{
id : 1,
name : 'Apple Iphone 7 Plus 32GB',
price : 8000000,
image : 'https://znews-photo.zadn.vn/w660/Uploaded/ynssi/2016_08_16/1.png',
status :true,
},
{
id : 2,
name : 'Apple Iphone 8 Plus 32GB',
price : 10000000,
image : 'https://znews-photo.zadn.vn/w660/Uploaded/ynssi/2016_08_16/1.png',
status :true,
},
{
id : 3,
name : 'Apple Iphone 10 Plus 32GB',
price : 15000000,
image : 'https://blogger.googleusercontent.com/img/proxy/AVvXsEhSiInrSMkoKB2eCDmIO6ff2AllzJrCO7HfNIJKl5wXxfCGgm7bb-BHj7brbnX0jm5nizCxfa03wT6ie6yLdufWQqAHOPFhHg531mZzMXBcIsHYIT7eLUtx_AkwDk8Cj_rTRgM-UJD5rMuw0nC2YY1UOnqYWlLHu2RBBIxvbwMO39uC0DxqKHMVhL082nz0tCGz=',
status :false,
},
];
let elements = product.map((product,index) => {
if(product.status){
return <Product
key = {product.id}
price={product.price}
image={product.image}
>
{product.name}
</Product>
}
});
return (
<div>
<nav className="navbar navbar-inverse">
<div className="container-fluid">
<a className="navbar-brand">Props</a>
</div>
</nav>
<div className="container">
<div className="row">
<div className="row">
<div className="col-xs-12 col-sm-12 col-md-12 col-lg-12">
{elements}
</div>
</div>
</div>
</div>
</div>
);
}
}
export default App;
//]]>
</script> Tạo tập tin Product.js cà nhập mã nguồn sau:(Phần được bôi đậm)
<script type='text/javascript'>
//<![CDATA[
import React, { Component} from 'react';
class Product extends Component{
render() {
return (
<div>
<div className="col-xs-4 col-sm-4 col-md-4 col-lg-4">
<div className="thumbnail">
<img alt={this.props.children} src={this.props.image}/>
<div className="caption">
<h3>
{ this.props.children}
</h3>
<p>
{this.props.price} VNĐ
</p>
<p>
<a className="btn btn-primary">Mua Ngay</a>
</p>
</div>
</div>
</div>
</div>
);
}
}
export default Product;
//]]>
</script>Chú ý : kiểm tra file app.js có status :true mới được hiển thị ra man hình.
=> xem kết quả:

0 Nhận xét