[React Native Androidアムウェイシリーズ]React Nativeのreactjsベース
8136 ワード
この一連の課程はreact-nativeに関する知識をたくさん話しました.スタイル、下地、環境などについての知識があります.これからreactjsの基礎知識を勉強します.私たちのコードは、私たちが作成したコンポーネントに関する知識です.react-native-androidシリーズの教程をご覧になってください.このシリーズの教程に従って勉強すれば、react-native-androidの開発が上手になります.https://segmentfault.com/blog...この前を振り返ってみますと、こんなに多くの実践をしました.振り返って私達が書いたJS文書を見に来ました.
1.文法
私たちはreactjsを書く時、もちろんES 5の文法を使うことができます.
もちろん、前のように、es 6の文法を使って説明してもいいです.本物のクラスを使います.ここで、筆者はES 6の文法を使ってRNプログラムを書くことを提案します.
と言わざるを得ませんが、jsxは本当に不思議なデザインで、jsコードの中に、xmlスタイルのラベルが入っています.最初はこういうコード形式に慣れないかもしれませんが、この文法に慣れたら、バスバーは使えません.
3.コンポーネント
上に述べました.ラベルは自分で作ったコンポーネントでもいいです.私たちも簡単なコンポーネントを書きました.reactでは、自分のコンポーネントを書き、アプリケーションをより詳細に分割して複数のモジュールに分割することができます.モジュール化しやすいメンテナンスコードです.カスタマイズされたコンポーネントは、レンダリング時に、いくつかの属性を導入することができ、コンポーネント内でこれらの属性を取得することができます.
実は私達はJSXにクラス名を挿入しましたが、レンダリングする時にクラスの実例を生成します.ここで提示したいのですが、クラスの最初の文字は大文字でなければエラーが発生します.
図3.0.2
4状態と更新
ウェブページの開発では、私たちの思考は常に自分でデータを取得し、自分でビューを変更します.しかし、reactjsは私たちに全く違った体験を与えてくれました.reactjsは、私たちのプログラムはステートマシンだと思います.reactjsは私達のためにVM層を提供してくれました.実はまた振り返ってみます.私達はrender関数の戻り値を書く時、もう私達の状態をビューと融合したのではないですか?
reactjsは私達が状態を変更することを支持して、それによってビューの変化を引き起こします.上記のコードを改造して、ビューを変更するタイミングを増やします.
図4.0.1
図4.0.2
実は私達も推測できます.set Stateの方法は最終的に再度レンダーを呼び出しますが、中には特殊な処理があります.しかし、上記のコードの観点から、私達は状態を変更しただけです.最終的にビューの変化を引き起こしました.これはreactjsの特別な思想です.
5イベントのバインディング
私達のjsあるいは元生androidと違って、私達はいつもビューの外で、自分の論理コードの中で、特定の元素を選んで、その上でイベントを結び付けます.reactjsバインディングイベントはJSXに置かれています.
react-webとは異なり、イベントトリガ関数のコンテキストは、デフォルトではこのコンポーネントです.この例では、私たちchangeStateのthisとは、hellowReactの例を指します.
6要素を取得する
先を信じる学生たちは、やはりjQueryのパターンに慣れていて、セレクタでDOMを選び、操作しています.でも、Reactにとっては、普段はstateとjsxを使ってビューを更新すればいいです.RNはDOMではないが、DOMを選択していないが、要素を取得することは避けられない.この場合は「構成に対する参照→refs属性」を使います.簡単な例を挙げると、この元素のページ上の位置と長さと幅を測定します.私達はrefsを使って、まずその元素を入手してから測定します.
7グローバルオブジェクト
react Nativeでは、全体のオブジェクトを参照してwindowまたはglobalを使用することができます.それらはいずれもオブジェクトのDedicated WorkerGlobal Scopeを指します.ここではjscoreが提供する方法があります.また、reactnative注入の方法もあります.私たちはこれからreact注入の方法を詳しく説明します.
8モジュール化
ReactNativeは直接にcomonjs方式を使ってモジュール化コードを作成することができます.使用するpackagerパッケージの方式はwebpackまたはbrowserfyに類似していますので、requireを通じてモジュールを導入し、モジュール内の方法または変数をexportで暴露することができます.もちろん、直接にes 6 importを使うのも、自分で書いたモジュールを導入するのに便利です.次の例のように:
9授業後の作業
このセクションでは基礎学習を重視していますので、コードの例はアップロードされていません.上のコードを自分で叩いて実践してください.
続いて、みんなと一緒にreact-nativeのソースコードのコンパイルについて話をします.また、近いうちに私もreact-native-iosの一連の教程を開設します.離れないでください.私に注目してください.
もしこの文章が好きなら、下の紹介をクリックしてください.あなたの推薦は私の更なる文の動力になります.
1.文法
私たちはreactjsを書く時、もちろんES 5の文法を使うことができます.
var reactNative = require('react-native');
var React = require('react');
var View = reactNative.View;
var Text = reactNative.Text;
var StyleSheet = reactNative.StyleSheet;
var AppRegistry = reactNative.AppRegistry;
var hellowReact = React.createClass({
render: function () {
return (
react-native-android
);
}
});
AppRegistry.registerComponent('hellowReact', () => hellowReact);
ES 6の文法を使ってもいいです.reactにはpackagerが内蔵されています.エス5の文法を使うと、私たちは『クラス』を作成しました.つまり、コンポーネントです.この『クラス』にはレンダーの方法が必要です.このレンダー法の戻り値は、APPにレンダリングされた原生層を指定しています.これはアンディロイドのXmlレイアウトファイルと似ていると思います.もちろん、前のように、es 6の文法を使って説明してもいいです.本物のクラスを使います.ここで、筆者はES 6の文法を使ってRNプログラムを書くことを提案します.
import React, {Component} from 'react';
import {
StyleSheet,
Text,
View,
AppRegistry
} from 'react-native';
class hellowReact extends Component {
render() {
return (
react-native-android
);
}
}
AppRegistry.registerComponent('hellowReact', () => hellowReact);
2.JSXと言わざるを得ませんが、jsxは本当に不思議なデザインで、jsコードの中に、xmlスタイルのラベルが入っています.最初はこういうコード形式に慣れないかもしれませんが、この文法に慣れたら、バスバーは使えません.
class hellowReact extends Component {
render() {
return (
react-native-android
);
}
}
上記のコードから、jsxのタグの形はhtmlと似ています.同様に入れ子が必要なラベル層です.閉じたラベルも必要です.JSXにjs変数を混ぜる必要がある場合は、境界番号{}
を使用して小包を行う必要があります.その中のjsは解析されます.JSXのラベルは、react-nativeベースライブラリから提供されます.もちろん、私たちのラベルも自分で作ったコンポーネントを使うことができます.以下のとおりですclass Com extends Component {
render() {
return (
react-native-android
);
}
}
class hellowReact extends Component {
render() {
return (
);
}
}
ここで注意したいのですが、テキストはTextラベルに包まれます.ラベルの先頭に属性を受け入れる.各ラベルのスタイルは、自分のスタイルにロードできます.また、私達がレンダリングしたjsxは、一番外側の層にはトップクラスの元素があるだけです.3.コンポーネント
上に述べました.ラベルは自分で作ったコンポーネントでもいいです.私たちも簡単なコンポーネントを書きました.reactでは、自分のコンポーネントを書き、アプリケーションをより詳細に分割して複数のモジュールに分割することができます.モジュール化しやすいメンテナンスコードです.カスタマイズされたコンポーネントは、レンダリング時に、いくつかの属性を導入することができ、コンポーネント内でこれらの属性を取得することができます.
class Com extends Component {
render() {
return (
:{this.props.param}
);
}
}
class hellowReact extends Component {
render() {
return (
);
}
}
図3.0.1実は私達はJSXにクラス名を挿入しましたが、レンダリングする時にクラスの実例を生成します.ここで提示したいのですが、クラスの最初の文字は大文字でなければエラーが発生します.
図3.0.2
4状態と更新
ウェブページの開発では、私たちの思考は常に自分でデータを取得し、自分でビューを変更します.しかし、reactjsは私たちに全く違った体験を与えてくれました.reactjsは、私たちのプログラムはステートマシンだと思います.reactjsは私達のためにVM層を提供してくれました.実はまた振り返ってみます.私達はrender関数の戻り値を書く時、もう私達の状態をビューと融合したのではないですか?
class hellowReact extends Component {
constructor(props) {
super(props);
this.state = {
name: 'hy'
};
}
render() {
return (
:{this.state.name}
);
}
}
上のコードは、現在の構成の状態を現在のコンポーネントのビューに混ぜて示しています.私たちはコンポーネントを作成する時に初期状態を与えます.この状態はget Initial Stateというフック関数の戻り値の中でコンポーネントに与えられます.reactjsは私達が状態を変更することを支持して、それによってビューの変化を引き起こします.上記のコードを改造して、ビューを変更するタイミングを増やします.
import React, {Component} from 'react';
import {
StyleSheet,
Text,
View,
AppRegistry
} from 'react-native';
class hellowReact extends Component {
constructor(props) {
super(props);
this.state = {
name: 'hy'
};
}
changeState() {
this.setState({
name: 'hysg'
});
}
render() {
return (
:{this.state.name}
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: 'row',
alignItems: 'flex-start',
backgroundColor: '#fff',
},
});
AppRegistry.registerComponent('hellowReact', () => hellowReact);
上のコードを見て、ビューをクリックした時に、現在のコンポーネントの状態を更新します.強制的に状態を変更したわけではない.しかし、状態が変わりました.すぐに来たのは図4.0.1の初期状態です.クリックした後、状態が更新されました.図は直ちに図4.0.2に更新されました.図4.0.1
図4.0.2
実は私達も推測できます.set Stateの方法は最終的に再度レンダーを呼び出しますが、中には特殊な処理があります.しかし、上記のコードの観点から、私達は状態を変更しただけです.最終的にビューの変化を引き起こしました.これはreactjsの特別な思想です.
5イベントのバインディング
私達のjsあるいは元生androidと違って、私達はいつもビューの外で、自分の論理コードの中で、特定の元素を選んで、その上でイベントを結び付けます.reactjsバインディングイベントはJSXに置かれています.
class hellowReact extends Component {
constructor(props) {
super(props);
this.state = {
name: 'hy'
};
}
changeState() {
this.setState({
name: 'hysg'
});
}
render() {
return (
:{this.state.name}
);
}
};
このように、私たちはTouchEndイベントを最外層のViewに結び付けました.イベント名は直接ラベルの属性として書かれていますが、その値は対応するイベントハンドラ関数です.react-webとは異なり、イベントトリガ関数のコンテキストは、デフォルトではこのコンポーネントです.この例では、私たちchangeStateのthisとは、hellowReactの例を指します.
6要素を取得する
先を信じる学生たちは、やはりjQueryのパターンに慣れていて、セレクタでDOMを選び、操作しています.でも、Reactにとっては、普段はstateとjsxを使ってビューを更新すればいいです.RNはDOMではないが、DOMを選択していないが、要素を取得することは避けられない.この場合は「構成に対する参照→refs属性」を使います.簡単な例を挙げると、この元素のページ上の位置と長さと幅を測定します.私達はrefsを使って、まずその元素を入手してから測定します.
class hellowReact extends Component {
getPos() {
this.refs.measureme
.measure((fx, fy, width, height, px, py) => {
console.log(' :', 'x:', fx, 'y:', fy);
});
}
render() {
return (
);
}
}
これをクリックして元素の位置を測定できます.7グローバルオブジェクト
react Nativeでは、全体のオブジェクトを参照してwindowまたはglobalを使用することができます.それらはいずれもオブジェクトのDedicated WorkerGlobal Scopeを指します.ここではjscoreが提供する方法があります.また、reactnative注入の方法もあります.私たちはこれからreact注入の方法を詳しく説明します.
8モジュール化
ReactNativeは直接にcomonjs方式を使ってモジュール化コードを作成することができます.使用するpackagerパッケージの方式はwebpackまたはbrowserfyに類似していますので、requireを通じてモジュールを導入し、モジュール内の方法または変数をexportで暴露することができます.もちろん、直接にes 6 importを使うのも、自分で書いたモジュールを導入するのに便利です.次の例のように:
import amodule from './amodule';
var hellowReact extends Component {
constructor(props) {
super(props);
this.state = {
name: amodule.getName()
};
}
changeState() {
this.setState({
name: 'hysg'
});
}
render() {
return (
:{this.state.name}
);
}
}
amodule.jsのコードは以下の通りです.export default function () {
return 'hy';
}
ただし、モジュールは一つの例です.9授業後の作業
このセクションでは基礎学習を重視していますので、コードの例はアップロードされていません.上のコードを自分で叩いて実践してください.
続いて、みんなと一緒にreact-nativeのソースコードのコンパイルについて話をします.また、近いうちに私もreact-native-iosの一連の教程を開設します.離れないでください.私に注目してください.
もしこの文章が好きなら、下の紹介をクリックしてください.あなたの推薦は私の更なる文の動力になります.