Có gì mới?

Chào mừng bạn đến với diễn đàn Tui Học Web

Vui lòng đăng ký hoặc đăng nhập để sử dụng hết các tính năng của forum nhé!
  • Thông báo: Hiện tại do admin không có nhiều thời gian và không thể tiếp tục quản trị và maintain forum, do đó forum sẽ có dự định được đóng lại từ 06/2022, cảm ơn mọi người đã đồng hành cùng forum suốt thời gian vừa qua. Cảm ơn rất nhiều.

Kiến thức Component trong React

Kiến thức
Tình trạng
Không mở trả lời sau này.
component.jpg

Như đã giới thiệu ở bài
Ồ, bạn chưa phải thành viên của forum Đăng nhập hoặc đăng ký ngay.
, React chia nhỏ các phần của trang thành từng phần riêng biệt, gọi là component, ví dụ như các phần: header, footer, sidebar, navigation, itemList, ... .
Tính chất của component giống như một hàm (function) Javascript, có thể tái sử dụng ở nhiều nơi khác nhau.

Cách viết một component​

  • Viết dưới dạng function (hoặc Class - nói ở bài sau), và function luôn được return.
  • Bên trong return luôn tồn tại tag bao ngoài tất cả (tag wrap).
  • Sử dụng thư viện React.DOM để render một component.
  • Function render phải có cấu trúc XML, viết dưới dạng <Tên /> hoặc <Tên></Tên>
Ví dụ:

HTML:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>React Component</title>
    <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
  </head>
  <body>
    <div id="member"></div>

    <script type="text/babel">
      function Member(){
        return(
          <div className="member">
            <h2>Nguyễn Văn A</h2>
            <p>Tuổi: 25</p>
          </div>
        )
      };

      ReactDOM.render(
        <Member />,
        document.getElementById('member')
      );
    </script>
  </body>
</html>

Hiển thị

Screenshot-2021-09-18-150049.png
Trong đó
  • Function Member() đóng vai trò là một component, nhiệm vụ là tạo một đối tượng member với tên và tuổi.
  • ReactDOM.render giữ vai trò render nội dung ra trình duyệt, dựa vào id="member".

Cách tạo và include component​

  • Giả sử ta có nhiều component khác nhau trong một trang, mỗi component có một nhiệm vụ riêng, Ví dụ:
    • Component avatar dành để xử lý hình ảnh member.
    • Component memberInfo dành để hiển thị thông tin member như tên, tuổi.
    • Component comment dành để quản ý bình luận của member.
  • Nhiệm vụ của ta là làm sao viết kết hợp các component này lại để hiển thị thông tin cho member, ta làm như sau:
Viết lại index.html với nội dung tách riêng các component:

HTML:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>React Component</title>
    <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
  </head>
  <body>
    <div id="member"></div>

    <script type="text/babel">
      function Avatar(){
        return(
          <div className="avatar">
            <img src="img_avatar.jpg" alt="" />
          </div>
        )
      };

      function MemberInfo(){
        return(
          <div className="info">
            <h2>Nguyễn Văn A</h2>
            <p>Tuổi: 25</p>
          </div>
        )
      };

      function Comment(){
        return(
          <div className="comment">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit proin sit amet neque.
          </div>
        )
      };

      function Member(){
        return(
          <div className="member">
            <Avatar />
            <MemberInfo />
            <Comment />
          </div>
        )
      };

      ReactDOM.render(
        <Member />,
        document.getElementById('member')
      );
    </script>
  </body>
</html>

Hiển thị

Screenshot-2021-09-18-150504.png
  • Với ví dụ trên, các bạn sẽ thấy việc tạo component rất đơn giản, chỉ cần tách các phần riêng biệt cho từng chức năng khác nhau, là ta đã có được các component, việc này thuận lợi trong việc sử lý các phần riêng mà không bị ảnh hưởng hay bị phân tâm với các component khác.
  • Khi làm thực tế, ta cần tách từng component ra riêng một file Javascript để tiện sử dụng, cách làm như thế nào sẽ được giới thiệu sau nhé.
Một vấn đề khác: Như đã nói component có thể tái sử dụng được, vậy với nội dung cố định như trên thì làm sao ta có thể tạo thêm được một member khác được?, không lẽ cần phải viết thêm một component mới? rất may là không cần, React có một khái niệm gọi là Props, giúp component truyền tham số dễ dàng cho các đối tượng, cùng xem tiếp bài học về React.js Props nhé.
 
Tình trạng
Không mở trả lời sau này.
shape1
shape2
shape3
shape4
shape7
shape8
Bên trên