
メンテナーは望んでいました
Reasonaboutable ™€のPersistent Reduxストア§オフラインファーストアプリケーション、楽観的なUIのファーストクラスのサポート。 React、Reactネイティブ、またはWebアプリのスタンドアロン状態コンテナとして使用します。
現在、オフラインはコミュニティ主導のチームによって維持されています。ライブラリの新しいバージョンは、NPM Organization
@redux-offlineで利用できるようになりました。そもそもこの素晴らしいライブラリを作成してくれた@jevakallioに感謝します。
npm install --save @redux-offline/redux-offline@nativenpm install --save @redux-offline/redux-offline@exponpm install --save @redux-offline/redux-offlinecomposeでofflineストアエンハンサーを追加します import { applyMiddleware , createStore , compose } from 'redux' ;
import { offline } from '@redux-offline/redux-offline' ;
import offlineConfig from '@redux-offline/redux-offline/lib/defaults' ;
// ...
const store = createStore (
reducer ,
preloadedState ,
compose (
applyMiddleware ( middleware ) ,
offline ( offlineConfig )
)
) ; const followUser = userId => ( {
type : 'FOLLOW_USER_REQUEST' ,
payload : { userId } ,
meta : {
offline : {
// the network action to execute:
effect : { url : '/api/follow' , method : 'POST' , json : { userId } } ,
// action to dispatch when effect succeeds:
commit : { type : 'FOLLOW_USER_COMMIT' , meta : { userId } } ,
// action to dispatch if network action fails permanently:
rollback : { type : 'FOLLOW_USER_ROLLBACK' , meta : { userId } }
}
}
} ) ;エフェクトペイロードがJSON以外のものである場合、ボディとヘッダーを渡すことができます。
const registerUser = ( name , email ) => ( {
type : 'REGISTER_USER' ,
payload : { name , email } ,
meta : {
offline : {
// the network action to execute:
effect : { url : '/api/register' , method : 'POST' , body : `name= ${ name } &email= ${ email } ` , headers : { 'content-type' : 'application/x-www-form-urlencoded' } } ,
// action to dispatch when effect succeeds:
commit : { type : 'REGISTER_USER_COMMIT' , meta : { name , email } } ,
// action to dispatch if network action fails permanently:
rollback : { type : 'REGISTER_USER_ROLLBACK' , meta : { name , email } }
}
}
} ) ; Android用のネイティブアプリを作成する場合は、 AndroidManifest.xmlでネットワーク状態にアクセスする許可を必ず要求する必要があります。
< uses-permission android : name = " android.permission.ACCESS_NETWORK_STATE " />構成オプション、完全なAPI、および一般的なレシピについては、ドキュメントを参照してください。
改善と追加が大歓迎です。大規模な変更については、コーディングにジャンプする前にディスカッションの問題を提出してください。私たちはあなたが努力を無駄にするのが嫌いだろう。
バグを報告している場合は、エラーを再現するコードを含めてください。 CodeSandBoxの開始アプリケーションです。
正式なスタイルガイドの代わりに、含まれているESLINTルールに従って、きれいに使用してコードをフォーマットします。
カスタムRedux-Persistバージョンを使用する場合は、構成の例があります。
Offlineは、以前に既存のライブラリを使用してアプリを構築する際に発見されたパターンの蒸留です。
彼らの仕事がなければ、オフラインのreduxは存在しません。オフラインのReduxの背後にあるアイデアが気に入っているが、低レベルのコンポーネントから独自のスタックを構築したい場合は、これらは開始するのに適した場所です。
mit