Sử dụng Popovers trong react-bootstrap
Bài đăng này đã không được cập nhật trong 8 năm
I. Tổng quan về Popovers
Popoverslà một meta component của bootstrap hỗ trợ tạo một popup nhỏ có nội dung như một chú thích của một phần tử trong trang.Popoversđược sử dụng rất dễ dàng với cấu trúc đơn giản như dạng html.
II. Cài đặt
Popoverslà một component của bootstrap, vì vậy để sử dụngPopoverschỉ cần cài đặtreact-bootstrapreact-bootstrapđược cài đặt rất dễ dàng bằng câu lệnhnpm install --save react-bootstraphoặc thêm vào filepackage.jsonthư viện:
{
"dependencies": {
"react-bootstrap": "0.30.0"
}
}
trước khi chạy câu lệnh npm install
III. Các cách sử dụng Popovers
1. Một ví dụ đơn giản nhất về Popovers - Tooltips:
- Tooltips có thể coi như một dạng Popovers đơn giản nhất với chỉ một
title. - Hiển thị
tooltipsbằng thẻ<Tooltip>với cấu trúc:
<Tooltip placement="right" className="in" id="tooltip-right">
Tooltip right
</Tooltip>
- Trong đó
placementlà thuộc tính cho phép tùy chỉnh hướng hiển thị của tooltips bao gồm các giá trịleft,top,bottom,right, default là giá trịright. idlà thuộc tính bắt buộc củatooltips- Ngoài ra, nội dung của
tooltipscũng có thể tùy chỉnh thêm bằng các thẻ<b></b>,<strong></strong>... - Nếu có thuộc tính
className="in"thìtooltipssẽ luôn hiển thị trên trang. - Để
tooltipschỉ xuất hiện khi tác động vào một phần tử khác, cần sử dụng thẻ<OverlayTrigger>với cấu trúc:
<OverlayTrigger placement="right" overlay={tooltip}>
<Button bsStyle="default">Holy guacamole!</Button>
</OverlayTrigger>
- Cấu trúc của thẻ
<OverlayTrigger>tương đối đơn giản vớiplacementtương tự như thuộc tính của thẻ<Tooltip>vàoverlaylà thuộc tính bắt buộc, có nội dung là thẻ<Tooltip>đã tạo như trên. - Ngoài ra, một số thuộc tính hay được sử dụng có thể kể đến như:
rootClosevới thuộc tính default làfalseđể xác định xem có ẩn nội dungtooltipskhi click ra ngoài hay không.triggercho phép lựa chọn các action để hiệntooltipsnhưclick,hover,focus... giá trị default của thuộc tính này là ['hover', 'focus']
Như vậy là ta đã tạo được một Popovers đơn giản nhất dưới dạng tooltips. Tiếp theo ta sẽ tìm hiểu cách tạo một Popovers chuẩn với nội dung đầy đủ hơn.
2. Ví dụ về Popovers:
- Một
Popoversđược tạo ra bằng thẻ<Popover>với cấu trúc:
<Popover id="popover-basic" placement="right" positionLeft={200} positionTop={50} title="Popover right">
And here's some <strong>amazing</strong> content. It's very engaging. right?
</Popover>
- Thay vì sử dụng
tooltiptrongoverlaycủa thẻ<OverlayTrigger>, ta sử dụng<Popover>vừa tạo để hiển thị nội dung như mộtmodalvới phầnheaderlà nội dung của thuộc tínhtitlevà phầnbodylà content của phần tử này. - Các thuộc tính của
Popoverstương tự như các thuộc tính củaTooltipsvà được bổ sung thêm các thuộc tính:positionLeft,positionTopgiúp căn chỉnhpositionchoPopovers.titlelà phầnheaderchoPopoversđược hiển thị, với giá trị có thể lànodehoặcstring.
Như vậy là ta đã tạo được một Popovers đơn giản với nhiều tùy chỉnh. Tiếp theo ta sẽ tìm hiểu cách tạo một Popovers nâng cao.
3. Ví dụ về Popovers nâng cao - customize Overlay:
- Ta có thể tạo một
Popoversbằng cách customize mộtOverlaynhư sau:
<Overlay
show={this.state.show}
onHide={() => this.setState({ show: false })}
placement="right"
container={this}
target={() => ReactDOM.findDOMNode(this.refs.target)}
>
content
</Overlay>
- Thay vì sử dụng thẻ
<OverlayTrigger>bao ngoài đối tượng được sử dụng action thì ta dùng thẻ<Overlay>với content là một<Tooltip>,<Popover>, hoặc một node tự customize cho việc hiển thị nội dung chú thích. - Ta có thể custom thẻ
<Overlay>với các thuộc tính thông dụng như:showđể hiển thịOverlayhay không với giá trịtruevàfalse.rootClosevàplacementtương tựPopovers.containervàtargetlà trường bắt buộc.
V. Kết luận
Trên đây là những ví dụ từ cơ bản đến nâng cao trong việc sử dụng Popovers của react-bootstrap để tạo ra các chú thích cho một phần tử. Hi vọng bài viết có thể cung cấp cách nhìn tổng quan, dễ hiểu nhất cho những bạn mới tiếp xúc với các components đơn giản của thư viện react-bootstrap. Chúng ta có thể tìm hiểu rất nhiều components khác rất tiện dụng trong thư viện react-bootstrap của react qua trang chính thức: https://react-bootstrap.github.io/components.html
Tài liệu tham khảo và demo:
- https://react-bootstrap.github.io/components.html#tooltips
- https://react-bootstrap.github.io/components.html#popovers
- https://react-bootstrap.github.io/components.html#custom-overlays
Cảm ơn đã theo dõi
All rights reserved