Chuyển tới nội dung chính

App

App là component chính chứa toàn bộ nội dung, cài đặt chung của ứng dụng

  • View là container chứa các Page nằm bên trong App, 1 App có thể có 1 hoặc nhiều View, mặc định mỗi View sẽ kế thừa các routes từ App, tuy nhiên có thể tuỳ chỉnh với mỗi View cụ thể.
  • Page là component hiển thị nội dung trang, khi app có định tuyến, chia ra nhiều routes, mỗi Page sẽ ứng với một route cụ thể, các route được khởi tạo mặc định trong app ( đọc từ trường pages trong file app-config.json) hoặc routes cụ thể khai báo trong View

App Properties

App component nhận tất cả tham số thông qua props.

App Parameters

Danh sách các tham số:

ParameterTypeDefaultDescription
themestringautoChủ đề của ứng dụng. Có thể là ios, md hoặc auto. Trường hợp là auto thì theme sẽ được đặt iOS cho iOS devices, MD theme trên android.
themeDarkbooleanfalseKhởi tạo ứng dụng với Dark Theme
languagestringNgôn ngữ ứng dụng. Mặc định là ngôn ngữ hiện tại trên browser/webview (VD: navigator.language).
routesarrayđọc trong trường "pages" trong app-config.jsonMảng các route mặc định cho tất cả các view
onobject{}Khởi tạo các events handlers cho events . Ví dụ:
const zmpParams = {
on: { init: function () {
console.log("App initialized");
},
pageInit: function () { console.log("Page initialized"); },
},
};
return <App {...zmpParams}/>
Touch Module Parameters
touchobjectObject với các tham số:
const params = {
touch: {
tapHold: true,
},
};

touch parameters

ParameterTypeDefaultDescription
touchClicksDistanceThresholdnumber5Khoảng cách (tính theo px) giúp chặn thao tác vuốt nhẹ màn hình. Nếu khoảng cách tap/move lớn hơn giá trị này thì sự kiện "click" sẽ không bị triggered. (Chỉ sử dụng cho touch events khi fastClicks disabled).
disableContextMenubooleanfalseĐặt true để vô hiệu hóa context menu (với chuột phải hoặc nhấn giữ)
tapHoldbooleanfalseBật cho phép nhấn giữ
tapHoldDelaynumber750Quyết định thời gian (thính theo ms) user phải gữi để sự kiện nhấn giữ được kích hoạt vào element đích
tapHoldPreventClicksbooleantrueMặc định được kích hoạt, sự kiện click sẽ không được kích hoạt sau sự kiện nhân giữ màn hình
activeStatebooleantrueKhi kích hoạt, sẽ tự động thêm class "active-state" vào phần tử đang được active (:active).
activeStateElementsstringa, button, label, span, .link, .item-link,CSS selector cho phép kích hoạt activeState khi click
activeStateOnMouseMovebooleanfalseNếu kích hoạt sẽ giữ class "active state" sau khi mouse di chuyển
iosTouchRipplebooleanfalseKích hoạt hiệu ứng touch ripple cho iOS theme
mdTouchRipplebooleanKích hoạt hiệu ứng touch ripple cho MD theme (android)
auroraTouchRipplebooleanfalseKích hoạt hiệu ứng touch ripple cho Aurora theme
touchRippleElementsstring.ripple, .link, .item-link, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio,CSS selector tới phần tử sẽ áp dụng hiệu ứng touch ripple khi click
touchRippleInsetElementsstring.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .md .navbar .link.backCSS selector của element áp dụng hiệu ứng inset touch ripple khi click

App Methods & Properties

zmp instance cung cấp các phương thức và thuộc tính:

Ví dụ:

import { zmp } from "zmp-framework/react";

| Properties | | ------------------------ | ------------------------------------------------------------------------- | | zmp.routes | App routes | | zmp.language | App language | | zmp.el | App root HTML element | | zmp.$el | zmpDom instance với app root HTML element | | zmp.rtl | Boolean thuộc tính cho biết ứng dụng đang ở layout RTL hay không | | zmp.theme | String chủ đề hiện tại của ứng dụng | | zmp.width | App width in px | | zmp.height | App height in px | | zmp.left | App left offset in px | | zmp.top | App top offset in px | | zmp.initialized | Boolean thuộc tính cho biết app đã được khởi tạo hay chưa | | zmp.$ | zmpDom alias | | zmp.params | App parameters | | zmp.online | Boolean thuộc tính cho biết app đang kết nối hay không. (true nếu online) | | Methods | | zmp.on(event, handler) | Thêm event handler | | zmp.once(event, handler) | Thêm event handler tự động xóa sau khi được kích hoat | | zmp.off(event, handler) | Xóa event handler | | zmp.off(event) | Xóa tất cả handlers cho một event cụ thể | | zmp.emit(event, ...args) | Kích hoạt event trên instance | | zmp.init() | Khởi tạo ứng dụng khi init App component với tham số init: false |

App Events

App instance emits các events:

EventArgumentsDescription
initEvent kích hoạt khi ứng dụng được khởi tạo.
resizeEvent sẽ kích hoạt khi kích thước màn hình ứng dụng thay đổi(window resize).
orientationchangeEvent will sẽ kích hoạt khi xoay màn hình (window orientantion change).
click(event)Event sẽ kích hoạt khi người dùng click
touchstart:active(event)Event sẽ kích hoạt khi người dùng touch element (mousedown), event được thêm dưới dạng active listener
touchmove:active(event)Event sẽ kích hoạt khi người dùng thực hiện touch move (mousemove), event được thêm dưới dạng active listener
touchend:active(event)Event sẽ kích hoạt sau khi người dùng kết thúc hành động touch (mouseup) event được thêm dưới dạng active listener
touchstart:passive(event)Event sẽ kích hoạt khi người dùng touch element (mousedown), event được thêm dưới dạng pasive listener
touchmove:passive(event)Event sẽ kích hoạt khi người dùng thực hiện touch move (mousemove), event được thêm dưới dạng passive listener
touchend:passive(event)Event sẽ kích hoạt sau khi người dùng kết thúc hành động touch (mouseup) event được thêm dưới dạng passive listener
onlineEvent được kích hoạt khi app online
offlineEvent được kích hoạt khi app offline
connection(isOnline)Event kích hoạt khi trạng thái network thay đổi

Ví dụ:

zmp.on("connection", function (isOnline) {
if (isOnline) {
console.log("app is online now");
} else {
console.log("app is offline now");
}
});

Ví dụ

Giả sử Project của bạn có cấu trúc như bên dưới:

Code demo fallback when rendering server side!