Manajemen Negara berbasis Redux untuk applet Wechat (微信小程序, weapp), untuk menghubungkan toko Redux dengan siklus hidup Aplikasi atau Halaman weapp Anda.
# via Github
npm install xixilive/redux-weapp --save-dev
# via npm
npm install redux-weapp --save-dev
# via yarn
yarn add -D redux-weapp
git clone https://github.com/xixilive/redux-weapp.git
&& cd redux-weapp
&& yarn
&& yarn build
Sebelum mencoba cuplikan kode demo ini, Anda harus/harus berpengalaman dalam pengembangan modulasi weapp. 微信小程序模块化开发实践
// Redux store
import { createStore } from 'redux'
//create your Redux store
const store = createStore ( ... )
import connect from 'redux-weapp'
const config = connect . App (
store ,
//to map next state into your app
( state ) => {
// must return an object, which will be passed to onStateChange function
return { }
} ,
// to bind dispatch with your action,
// and this binding will be injected into your app object.
( dispatch ) => {
// return an object, which can be invoked within app context(this scope).
return { }
}
) ( {
onLaunch ( options ) { } ,
//...,
onStateChange ( nextState , prevState , initFlag ) {
this . setData ( { ... this . data , ... nextState } )
}
} )
// construct your app
App ( config )
Asumsikan kita memiliki bentuk toko sebagai berikut:
{
"todos" : [
{
"title" : " String " ,
"complete" : " Boolean "
}
]
}
dan kami telah mendefinisikan pembuat tindakan (FSA) sebagai:
const fetchTodosAction = ( status ) => ( { type : 'FETCH_TODOS' , filter : { status } } )
Oke, mari kita sambungkan toko ke halaman daftar tugas.
//
import connect from 'redux-weapp'
const config = connect . Page (
store ,
//to map next-state into your page
( state ) => ( { todos : state . todos } ) ,
// to bind dispatch with your action creators,
// and this binding will be injected into your page object
( dispatch ) => ( {
fetchTodos ( status = 'inprogress' ) {
// dispatch an action
dispatch ( fetchTodosAction ( status ) )
}
} )
) ( {
onLoad ( options ) {
this . fetchTodos ( 'inprogress' )
} ,
onStateChange ( nextState , prevState , initFlag ) {
const { todos } = nextState
this . setData ( { todos } ) // to update UI
} ,
// view interactions
onTapCompleteTab ( ) {
this . fetchTodos ( 'complete' )
} ,
onTapInProgressTab ( ) {
this . fetchTodos ( 'inprogress' )
}
} )
// construct your page
Page ( config )
//define app connect function
factory = connect . App (
store : ReduxStore ,
mapStateToProps : Function ( state : Object ) ,
mapDispatchToProps : Function ( dispatch : Function )
) : Function
//build a store-binding app config object
config = factory ( {
onLaunch ( options : Object ) { } ,
onStateChange ( nextState : Object , prevState : Object , initFlag : Any ) ,
//...
} ) : Object
//launch app with store-binding config
App ( config )
//define page connect function
factory = connect . Page (
store : ReduxStore ,
mapStateToProps : Function ( state : Object ) ,
mapDispatchToProps : Function ( dispatch : Function )
) : Function
//build a store-binding page config object
config = factory ( {
onLoad ( options : Object ) { } ,
onStateChange ( nextState : Object , prevState : Object , initFlag : Any )
//...
} ) : Object
//start page instance with store-binding config
Page ( config )
onStateChange
// would be called after each concerned state changed
onStateChange ( nextState : Object , prevState : Object , initFlag : Any ) : void
initFlag
: fitur baru dari [email protected]
, lihat bagian Perubahan untuk detailnya. connect.App
AplikasiappLaunchOptions
dari fungsi mapState
. // v0.1.x
connect . App ( {
store : ReduxStore ,
mapState : Function ( state : Object , appLaunchOptions : Object ) : Object ,
mapDispatch : Function ( dispatch : Function ) : Object ,
} )
// v0.2.x
connect . App ( {
store : ReduxStore ,
mapState : Function ( state : Object ) : Object ,
mapDispatch : Function ( dispatch : Function ) : Object ,
} )
connect.Page
HalamanpageLoadOptions
dari fungsi mapState
. // v0.1.x
connect . Page ( {
store : ReduxStore ,
mapState : Function ( state : Object , pageLoadOptions : Object ) : Object ,
mapDispatch : Function ( dispatch : Function ) : Object ,
} )
// v0.2.x
connect . Page ( {
store : ReduxStore ,
mapState : Function ( state : Object ) : Object ,
mapDispatch : Function ( dispatch : Function ) : Object ,
} )
onStateChange
initFlag
sebagai argumen ke-3, yang bisa berupa nilai string INIT_SYNC
tepat pada pengiriman pertama, sebaliknya undefined
. // v0.1.x
onStateChange ( nextState : Object , prevState : Object )
// v0.2.x
onStateChange ( nextState : Object , prevState : Object , initFlag : Any )
onLaunch
siapkan pendengar berlangganan ketika fungsi onLaunch
dipanggil, dan status penyimpanan awal akan disiarkan.
onShow
Listener yang tidak aktif akan disetel menjadi active
ketika fungsi onShow
dipanggil, dan pendengar akan dipanggil dengan status terakhir.
onHide
Listener yang aktif akan disetel ke inactive
ketika fungsi onHide
dipanggil.
onLoad
siapkan pendengar berlangganan ketika fungsi onLoad
dipanggil, dan status penyimpanan awal akan disiarkan.
onShow
Listener yang tidak aktif akan disetel menjadi active
ketika fungsi onShow
dipanggil, dan pendengar akan dipanggil dengan status terakhir.
onHide
Listener yang aktif akan disetel ke inactive
ketika fungsi onHide
dipanggil.
onUnload
Listener akan dihapus ketika fungsi onUnload
dipanggil.
Semoga beruntung!