
ReSubは、データソースにアクセスするだけで自動的にサブスクリプションを管理するReactコンポーネントを作成するためのMicrosoft+オープンソース
それはTypeScriptの使用を示唆しています。 彼らのドキュメントから:
TypeScriptなしでReSubを使用するのは問題ありませんが、TypeScriptのメソッドデコレータにアクセスできないと、ストアやコンポーネントはautosubscriptionsを活用できず、その値
ReSubはReduxやMobXと同じカテゴリに分類されます。
私の意見では、私がこれを比較する最も近いものはMobXです。 ReSubライブラリは、データソースにアクセスするだけで自動的にサブスクリプションを管理し、これまでの実験では定型文を削減し、理解しやすいAPIを提この記事では、新しいReact Nativeプロジェクトを設定し、状態を管理する方法としてReSubを実装する方法について説明します。 私たちは非常に基本的なtodoアプリを作成することによってそうします。
この例の最後のコードはここにあり、resub-medium-example
ブランチにあります。
始めるために、まず新しいReact Nativeプロジェクトを作成し、TypeScriptをセットアップし、tsconfig.json
を追加して設定し、必要なReactとReact NativeタイプとReSub依存関係をインストールし
- プロジェクトを作成し、ディレクトリに変更します
react-native init rnresub// then cd into directory after project is createdcd rnresub
2. TypeScriptをインストールします(このチュートリアルでは、バージョンを使用しています2.3.2)
npm i typescript --save-dev
3. インストールタイプ
npm i @types/react-native @types/react --save-dev
4. 再サブをインストールする
npm i resub --save
5. 作成tsconfig.json
touch tsconfig.json
tsconfig.json
に次の設定を追加します:
{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"jsx": "react",
"outDir": "build",
"rootDir": "src",
"allowSyntheticDefaultImports": true,
"noImplicitAny": true,
"experimentalDecorators": true,
"preserveConstEnums": true,
"allowJs": true,
"sourceMap": true
},
"exclude":
}
上記の設定では、ルートディレクトリ(rootDir
、アプリsrc
)やビルド出力ディレクトリ(outDir
、アプリビルド)など、いくつかの設定を行っています。
typescriptのコンパイル時に出力ディレクトリ(build
)が作成されます。
つまり、先に進んでsrc
ディレクトリを作成する必要があることを意味します。
次に、パッケージにビルドスクリプトを追加します。スクリプト内のjson:
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest",
"build": "tsc -w"
},
このスクリプトを使用すると、コマンドラインからnpm run build
を呼び出すことができ、typescriptコンパイラが起動します。 -w
フラグは、コンパイラにファイルの変更を監視するように指示し、変更が発生するとコードを自動的に再コンパイルします。
プロジェクトルートで、エントリポイント(App.tsx
)とストア(TodoStore.tsx
)の二つのファイルを持つsrcディレクトリを作成します。 ストアは当社のデータストアになります。
mkdir src
touch src/App.tsx src/TodosStore.tsx
ファイルと依存関係が設定されたので、インデックスを更新しましょう。イオスjsまたはインデックス。アンドロイド…TypeScriptによってコンパイルされるコードを使用するjsファイル。インデックスに
。イオスjsまたはインデックス。アンドロイド…js、ファイルを次のように更新します:
import React, { Component } from 'react'import {
AppRegistry
} from 'react-native'import App from './build/App'AppRegistry.registerComponent('rnresub', () => App)
今私達は私達の店を作成することについて行くことができます。
tsx,次のクラスを作成します。,私たちはステップバイステップを歩いていきます:
- ファイルの先頭に、ReSubが提供する基本クラスである
StoreBase
と、ストアを作成するために拡張するもの、およびデータを同期させる2つのデコレータ(autoSubscribeWithKey
とautoSubscribeStore
)をイン - クラスの先頭に、
_todos
配列と_textInputValue
文字列の2つの変数を作成します。 updateTextInputValue
メソッドはテキスト入力から値を取り込み、メソッドに渡された値で_textInputValue
を更新します。
これを行った後、this.trigger(TriggerKeys.InputTextKey)
を呼び出し、autoSubscribeWithKey(TriggerKeys.InputTextKey)
デコレータを使用してサブスクライブされているすべてのサブスクリプションをトリガーし、このデータを使用しているコンポーネtrigger()
はStoreBase
のメソッドとして利用可能であり、これを拡張してストアを作成しました。addTodo
は最初に追加する値があることを確認し、そうでない場合は何もせずに戻ります。
それ以外の場合は、既存の_textInputValue
と既存のtodos配列を取得し、新しい配列を作成し、新しいtodoを配列の最後の項目として渡します。
新しい配列が作成されたら、_textInputValue
を空の文字列に更新し、再度呼び出しますthis.trigger()
-
getTodos
_todos
のリストを返します。 データが変更されるたびに、このデータを使用するコンポーネントが更新されるようにするために、autoSubscribeWithKey(TriggerKeys.TodosChangedKey)
デコレータを追加します。 getTextInputValue
はgetTodos
と同じことを行いますが、_textInputValue
値
ストアが完了したので、最後に使用するAppファイルを作成しましょう。tsx…
特に、ReSubのComponentBase
クラスとReactのComponent
クラスを拡張していると思います。
- ファイルに必要な依存関係をインポートします
State
インターフェイスを作成し、その中にtodos
配列とtodo
文字列を宣言します- Resubの
ComponentBase
クラスを拡張します。3650>これは、コンポーネントの状態をストアの状態と結びつけるために使用するものです。 リンクされたbuildState docsをチェックして_buildState
の詳細を学びますが、基本的には、ストアが更新されたときにモジュールの状態を再構築するために呼び出されるメソ - このコンポーネントの残りの部分は、store
todos
配列、store_textInputValue
を更新し、いくつかのスタイルを追加する基本的なメソッドのカップルです。
今、ターミナルで、typescriptを実行します:
npm run build
次に、エミュレータでReact Nativeアプリを実行すると、機能するtodoアプリが表示されます!
ここでも、この例のコードはここにあります。
私の名前はNader Dabitです。 私はAppSyncやAmplifyのようなプロジェクトを扱うAWS Mobileの開発者の提唱者であり、React Native Trainingの創設者です。
ReactとReact Nativeが好きなら、podcast—React Native Radio onをチェックアウトしてくださいDevchat.tv.
また、私の本をチェックしてください、React Native in Action Now available from Manning Publications
あなたがこの記事を楽しんだなら、それをお勧めして共有してください!
コメントを残す