Reactjsは速くて上手です
8610 ワード
React略述
Reactは
Reactの強み 開発前の準備
Reactプログラムを開発するには必要なファイルを導入する必要があります.以下はReactプログラムの基本的な構造です.
つの さいデモ
ここではまず、 さな を げて、みんなに ものを べさせます.
この中には2つの比較的特殊な値
React API
Reactオブジェクト
React.Component を返す. をクリックしてください. に拡張される. React.creat Element
新しいReact要素を作成します.
React要素をコピーし、同時に
指定されたタイプのReactElementsを生成する関数を返します.
React.isValid Element
オブジェクトが有効なReact要素かどうかを判断します.
React.DOM運用
React.PropTypes
このオブジェクトはコンポーネントの
React.Children
このオブジェクトは
ReactDOM.render
コンポーネントローディングが成功したらレンダリングされたDOM要素を返します.
Reactは
fackbook
によって開放されたユーザーインターフェースを構築するjavascriptクラスのライブラリであり、
を開発するために多くの開発者がReactをMVC
モードのV
と見なしている.2011年にReactはfackbookエンジニアによって開発され、内部使用として開始され、2013年に正式オープンソースとした.Reactの強み
JavaScript
:データが変化すると、インタフェースは変化します.
:Reactは開発ユニットとして構成要素によって構成され、1つの構成要素は1つまたは複数の他の構成要素を含むことができる.
:Reactはwebappで使用できるほか、
を介してIOSとAndroidアプリケーションにも適用できます.Reactプログラムを開発するには必要なファイルを導入する必要があります.以下はReactプログラムの基本的な構造です.
React
ここで は つのファイルを しました.これらのファイルは React Native
によってインストールされました.まずbower
です.これは にReactの の を んでいます.react.js
は が したコンポーネントをhtmlドキュメントに したものです.react-dom.js
という を つコードをJavaScriptコードに します.JavaScriptのコードを っているなら、このファイルは しなくてもいいです.もちろんbrowser.min.js
を って して、react-toolsを してオフライン してもいいです.つの さいデモ
ここではまず、 さな を げて、みんなに ものを べさせます.
Search Demo
var SearchInput = React.createClass({
handerChange: function(){
this.props.setName(this.refs.seachbox.value);
},
render: function(){
return (
<div>
<input type='text' ref = 'seachbox' onChange={this.handerChange}/>
</div>
);
}
});
var List = React.createClass({
render:function(){
var lists = this.props.lists;
var filterWord = this.props.filterWord;
var rows = [];
lists.forEach(function(list){
if(list.toLowerCase().indexOf(filterWord.toLowerCase())!=-1){
rows.push(<div>{list}</div>);
}
}.bind(this));
return (
<div>{rows}</div>
);
}
});
var SearchBox = React.createClass({
getInitialState: function(){
return {
filterWord:''
};
},
setName: function(filterWord){
this.setState({filterWord:filterWord});
},
render: function(){
return (
<div>
<SearchInput setName = {this.setName}/>
<List filterWord = {this.state.filterWord} lists = {this.props.lists}/>
</div>
);
}
});
var lists = ['Jack','Wason','Marray','Lucy','Jummy','Herry','Bob'];
ReactDOM.render(<SearchBox lists= {lists}/>,document.getElementById('container'));
これは簡単な検索機能の実現で、上記のコードは直接にhtmlファイルに載せて実行できます.ここでは全部で3つのコンポーネントを定義しました.それぞれJSX
JSX
SearchInput
142 142 List
142 142 142 142 142 142で、ここでは一つのヒントが必要です.コンポーネント名の頭文字は大文字でなければなりません.SearchBox
はSearchInput
のサブコンポーネントとして、私達がコンポーネントを作るのはList
の方法です.SearchBox
を介して、コンポーネントを文書に追加します.この中には2つの比較的特殊な値
React.createClass
とReactDOM.render
があります.この2つの違いはthis.props
がロード後に変更されないことであり、this.state
は設定されていることによって対応する変化をもたらすことができます.React API
this.props
は、2つのオブジェクトthis.state
およびReact API
を定義している.Reactオブジェクト
React.Component
React
は、ES 6文法で構成要素を定義して使用されるもので、以下の通りである.class HelloMessage extends React.Component {
render() {
return Hello {this.props.name};
}
}
React.create ClassReactDOM
方法も、オブジェクトのパラメータを定義するためのコンポーネントであり、このオブジェクトは、React.Component
方法を備えなければならず、React.createClass
方法は、要素、例えばrender
を返す.この要素には、任意のhtmlタグまたはReactコンポーネントが含まれてもよい.var Component = React.createClass({
render:function(){
return (
Hello World!!!
);
}
);
この方法に導入されたオブジェクトには、属性をカスタマイズすることができます.もちろん、いくつかの特殊な意味を持つ属性があります.render
:示されたいコンポーネント要素div
:render
の初期値として返されます.getInitialState
:戻り値はthis.state
の値として、その優先度はコンポーネントを呼び出した時に直接設定された値より低い.getDefaultProps
:this.props
の値に対してデータタイプの検証を行います.一般的に開発デバッグとして使用されます.具体的なタイプはpropTypes
:この属性に導入された値はオブジェクトであり、このオブジェクトの属性または方法はコンポーネントに拡張され、多重化のために存在する意味がある.this.props
:この属性に導入された値はオブジェクトであり、このオブジェクトの属性または方法はコンポーネントクラスvar MyComponent = React.createClass({
statics: {
customMethod: function(foo) {
return foo === 'bar';
}
},
render: function() {
}
});
MyComponent.customMethod('bar'); // true
mixins
:デバッグ開発時にコンソールで使用されるコンポーネント名.statics
:コンポーネントがロードされるときに、この方法をトリガするdisplayName
:コンポーネントローディングに成功したら、この方法をトリガするcomponentWillMount
:componentDidMount
値が変化すると、この方法がトリガされるが、初期化コンポーネントの場合はトリガされない.componentWillReceiveProps
:this.props
またはshouldComponentUpdate
の値が変化したときにトリガされ、戻り値によって更新イベントがトリガされたかどうかを判定するが、初期化コンポーネントはトリガされない.this.props
:コンポーネントが更新される直前にこの方法をトリガする.this.state
:コンポーネントの更新が完了すると、この方法がトリガされます.componentWillUpdate
:コンポーネントがアンインストールされる直前にこの方法をトリガします.新しいReact要素を作成します.
React.createElement(string/ReactClass Type,[props],[childrens...]);
最初のパラメータは、作成された要素であり、componentDidUpdate
タグであっても良いし、カスタムのReactコンポーネントであっても良い.第2のパラメータは、componentWillUnmount
の初期値としてのオブジェクトである.第三及び後のパラメータはこの元素のサブ元素です.ReactDOM.render(
React.createElement("div", null,
React.createElement(SearchInput, {setName: this.setName}),
React.createElement(List, {filterWord: this.state.filterWord, lists: this.props.lists})
),doucment.getElementById('container'));
React.cloneElementReact要素をコピーし、同時に
html
とサブ要素を結合する.React.cloneElement(ReactClass Type,[props],[childrens...]);
React.creat Factory指定されたタイプのReactElementsを生成する関数を返します.
React.isValid Element
オブジェクトが有効なReact要素かどうかを判断します.
var ele = React.createElement('div');
React.isValidElement(ele); // ture
React.DOMReact.DOM運用
this.props
は、DOMコンポーネントに便利な包装を提供する.この方式はJSXを使用していない場合にのみ適用されます.例えば、props
は、ここでReact.createElement
DOMコンポーネントを実装している.React.PropTypes
このオブジェクトはコンポーネントの
React.DOM.div(null, 'Hello World!')
の検証のために準備されています.React.createClass({
propTypes:{
name:React.PropTypes.string,
age:React.PropTypes.number
}
...
});
ここでは、div
が望ましい値タイプはthis.props
であり、this.props.name
の値タイプはString
である.React.Children
このオブジェクトは
this.props.age
に対してデータ処理を行うことができます.React.Children.map(object children, function fn [, object thisArg])
React.Children.forEach(object children, function fn [, object thisArg])
React.Children.count(object children)
React.Children.only(object children)
React.Children.toArray(object children)
ReactDOMオブジェクトReactDOM.render
Number
は、定義されたコンポーネントをDOM要素にレンダリングすることである.ReactDOM.render(,document.getElementById('container'));
ReactDOM.unmount ComponentAt Nodethis.props.children
は、レンダリングされたReactコンポーネントをDOM要素から除去することである.ReactDOM.unmountComponentAtNode(document.geElementById('container'));
ReactDOM.finddoMNode・コンポーネントローディングが成功したらレンダリングされたDOM要素を返します.
DOMElement findDOMNode(ReactComponent component)