Nhảy tới nội dung

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.routesApp routes
zmp.languageApp language
zmp.elApp root HTML element
zmp.$elzmpDom instance với app root HTML element
zmp.rtlBoolean thuộc tính cho biết ứng dụng đang ở layout RTL hay không
zmp.themeString chủ đề hiện tại của ứng dụng
zmp.widthApp width in px
zmp.heightApp height in px
zmp.leftApp left offset in px
zmp.topApp top offset in px
zmp.initializedBoolean thuộc tính cho biết app đã được khởi tạo hay chưa
zmp.$zmpDom alias
zmp.paramsApp parameters
zmp.onlineBoolean 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!