등록 페이지
Page
Page()
함수는 페이지를 등록하는 데 사용됩니다. 페이지의 초기 데이터, 수명주기 기능, 이벤트 처리 기능 등을 지정하는 개체 매개변수를 허용합니다.
Page()
函数用来注册一个页面。接受一个object参数,其指定页面的初始数据、生命周期函数、事件处理函数等。object参数说明:
示例代码:
//index.js Page({ data: { text: "This is page data." }, onLoad: function(options) { // Do some initialize when page load. }, onReady: function() { // Do something when page ready. }, onShow: function() { // Do something when page show. }, onHide: function() { // Do something when page hide. }, onUnload: function() { // Do something when page close. }, onPullDownRefresh: function() { // Do something when pull down. }, onReachBottom: function() { // Do something when page reach bottom. }, // Event handler. viewTap: function() { this.setData({ text: 'Set some data for updating view.' }) }, customData: { hi: 'MINA' } })
初始化数据
初始化数据将作为页面的第一次渲染。data将会以JSON的形式由逻辑层传至渲染层,所以其数据必须是可以转成JSON的格式:字符串,数字,布尔值,对象,数组。
渲染层可以通过WXML对数据进行绑定。
示例代码:
<view>{{text}}</view> <view>{{array[0].msg}}</view>
Page({ data: { text: 'init data', array: [{msg: '1'}, {msg: '2'}] } })
生命周期函数
onLoad
: 页面加载- 一个页面只会调用一次。
- 接收页面参数可以获取
wx.navigateTo
和wx.redirectTo
及<navigator/>
中的 query。
onShow
: 页面显示- 每次打开页面都会调用一次。
onReady
: 页面初次渲染完成- 一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
- 对界面的设置如
wx.setNavigationBarTitle
请在onReady
之后设置。详见生命周期
onHide
: 页面隐藏- 当
navigateTo
或底部tab
切换时调用。
- 当
onUnload
: 页面卸载- 当
redirectTo
或navigateBack
的时候调用。
- 当
页面相关事件处理函数
onPullDownRefresh
: 下拉刷新- 监听用户下拉刷新事件。
- 需要在
config
的window
选项中开启enablePullDownRefresh
。 - 当处理完数据刷新后,
wx.stopPullDownRefresh
개체 매개변수 설명:
<view bindtap="viewTap"> click me </view>
초기화 데이터
Page({ viewTap: function() { console.log('view tap') } })
<!--index.wxml--> <view>{{text}}</view> <button bindtap="changeText"> Change normal data </button> <view>{{array[0].text}}</view> <button bindtap="changeItemInArray"> Change Array data </button> <view>{{obj.text}}</view> <button bindtap="changeItemInObject"> Change Object data </button> <view>{{newField.text}}</view> <button bindtap="addNewField"> Add new data </button>
수명주기 기능
- 🎜
onLoad
: 페이지 로드 중- 페이지는 한 번만 호출됩니다. 🎜
- 수신 페이지 매개변수는
wx.navigateTo
,wx.redirectTo
및
에서 쿼리를 얻을 수 있습니다. 🎜🎜🎜 - 🎜
onShow
: 페이지 표시- 페이지가 열릴 때마다 한 번씩 호출됩니다. 🎜🎜🎜
- 🎜
onReady
: 페이지의 초기 렌더링이 완료되었습니다.- 페이지는 한 번만 호출됩니다. 즉, 페이지가 준비되었으며 뷰 레이어와 상호작용할 수 있습니다. 🎜
wx.setNavigationBarTitle
과 같은 인터페이스 설정은onReady
이후에 설정해야 합니다. 자세한 내용은 수명 주기를 참조하세요 🎜🎜🎜- 🎜
onHide
: 페이지 숨김navigateTo
또는 하단탭 code > 전환 시 호출됩니다. 🎜🎜🎜
- 🎜
onUnload
: 페이지 언로드redirectTo
또는navigateBack
시 호출됩니다. 🎜🎜🎜🎜페이지 관련 이벤트 처리 기능
onPullDownRefresh
: 풀다운 새로 고침- 사용자 풀다운 새로 고침 이벤트를 수신합니다. 🎜
config
의window
옵션에서enablePullDownRefresh
를 활성화해야 합니다. 🎜- 데이터 새로고침을 처리한 후
wx.stopPullDownRefresh
는 현재 페이지의 풀다운 새로고침을 중지할 수 있습니다. 🎜🎜🎜🎜🎜이벤트 처리 기능
초기화 데이터 및 수명 주기 기능 외에도 페이지에서는 이벤트 처리 기능이라는 몇 가지 특수 기능을 정의할 수도 있습니다. 렌더링 레이어에서는 트리거 이벤트에 도달하면 페이지에 정의된 이벤트 처리 기능이 실행되는 이벤트 바인딩을 추가할 수 있습니다.
샘플 코드:
//index.js Page({ data: { text: 'init data', array: [{text: 'init data'}], object: { text: 'init data' } }, changeText: function() { // this.data.text = 'changed data' // bad, it can not work this.setData({ text: 'changed data' }) }, changeItemInArray: function() { // you can use this way to modify a danamic data path var changedData = {} var index = 0 changedData['array[' + index + '].text'] = 'changed data' this.setData(changedData) }, changeItemInObject: function(){ this.setData({ 'object.text': 'changed data' }); }, addNewField: function() { this.setData({ 'newField.text': 'new data' }) } })
rrreeePage.prototype.setData()
setData
함수는 로직 레이어에서 뷰 레이어로 데이터를 전송하는 동시에해당 this.data
값을 변경하는 데 사용됩니다.setData
函数用于将数据从逻辑层发送到视图层,同时改变对应的this.data的值
。注意:
- 直接修改this.data无效,无法改变页面的状态,还会造成数据不一致。
- 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
setData()参数格式
接受一个对象,以key,value的形式表示将this.data中的key对应的值改变成value。
其中key可以非常灵活,以数据路径的形式给出,如
array[2].message
,a.b.c.d
,并且不需要在this.data中预先定义。示例代码:
rrreeerrreeegetCurrentPages()
getCurrentPages()
참고:
- this.data를 직접 수정하는 것은 유효하지 않으며, 페이지 상태를 변경할 수 없으며, 데이터 불일치가 발생합니다.
- 한 번에 설정되는 데이터는 1024kB를 초과할 수 없습니다. 한 번에 너무 많은 데이터를 설정하지 않도록 하세요
.
setData() 매개변수 형식
객체를 받아들이고 this.data를 키와 값의 형태로 표현합니다. 키 입력에 해당하는 값이 value로 변경됩니다. 키는 매우 유연하며
array[2].message
,a.b.c.d
및 this.data의 사전 정의에 있을 필요는 없습니다.샘플 코드:
rrreeerrreeegetCurrentPages()
# 🎜 🎜 #getCurrentPages()
함수는 현재 페이지 스택의 인스턴스를 가져오는 데 사용되며, 스택 순서대로 배열 형태로 제공됩니다. 첫 번째 요소는 홈 페이지이고, 마지막 요소는 현재 페이지입니다. 참고: 페이지 스택을 수정하려고 시도하지 마세요. 라우팅 및 페이지 상태 오류가 발생할 수 있습니다.페이지 스택
프레임워크는 현재 모든 페이지를 스택 형식으로 유지합니다. 경로 전환이 발생하면 페이지 스택은 다음과 같이 작동합니다. 다음 내용 당장은 완전히 이해되지만 나중에 도움이 될 것입니다.
라이프 사이클 기능
다음 그림은 페이지 인스턴스의 라이프 사이클을 보여줍니다
#🎜🎜##🎜🎜# #🎜 🎜##🎜🎜#페이지 라우팅#🎜🎜##🎜🎜#미니 프로그램에서 모든 페이지의 라우팅은 프레임워크에서 관리됩니다. 라우팅 트리거 방법과 페이지 수명 주기 기능은 다음과 같습니다. 🎜🎜##🎜🎜 ##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Tab은 해당 수명 주기를 전환합니다(A 및 B 페이지는 Tabbar 페이지이고 C는 A 페이지에서 열린 페이지, D 페이지는 C 페이지에서 열린 페이지입니다(예: #🎜🎜#)Bug & Tip
bug
:iOS/Android
6.3.30
, 처음 페이지에 들어갈 때, 만약 페이지가 하나의 화면으로 가득 차지 않습니다. onReachBottom이 트리거됩니다. 사용자가 적극적으로 끌어올 때만 트리거되어야 합니다.bug
:iOS/Android
6.3.30
, 首次进入页面,如果页面不满一屏时会触发 onReachBottom ,应为只有用户主动上拉才触发;bug
:iOS/Android
6.3.30
bug
:iOS/Android
6.3 .30
, 손가락 풀업, onReachBottom은 여러 번 트리거되며 풀업이어야 하며 한 번만 트리거됩니다.
- 🎜