この記事ではreactの基本的な構文を中心に、stateやpropsの初期化方法について詳しく解説しています
1.リアクトとは
2.コンポーネントに反応する
3 ステートと小道具
4 React コンポーネントのライフサイクル
React は、ユーザー インターフェイスを構築するために使用される JavaSCRIPT ライブラリです。
React は主に UI を構築するために使用されます。React は MVC の V (ビュー) であると考えている人が多いです。
React は、Instagram Web サイトを構築するための Facebook の内部プロジェクトとして誕生し、2013 年 5 月にオープンソース化されました。
React は高いパフォーマンスと非常にシンプルなコード ロジックを備えており、ますます多くの人が注目し、使用し始めています。
React は通常の JavaScript の代わりに JSX を使用します。 JSX は、XML によく似た JavaScript 構文拡張機能です。
注意
JSX HTMLタグは小文字で始まり、Reactコンポーネントは大文字で始まります
属性は小さなキャメルケースを使用して名前が付けられ、最初の単語の最初の文字は小文字で他の大文字で始まります
HTMLタグのonclick属性やonchange属性などに注意してください。JSXではonClickを記述し、キャメルケースネーミングが有効です。
JSX をサポートするには、WebStrom の JavaScript を JSX Harmony に設定する必要があります
React の機能:
1. 宣言型設計 −React は、アプリケーションを簡単に記述できる宣言型パラダイムを採用しています。
2. 効率的 -React は、DOM をシミュレートすることで DOM との対話を最小限に抑えます。
3. 柔軟性 - React は既知のライブラリやフレームワークとうまく連携します。
4.JSX - JSX は JavaScript 構文の拡張です。 React 開発では必ずしも JSX を使用する必要はありませんが、JSX を使用することをお勧めします。
5. コンポーネント - React を通じてコンポーネントを構築すると、コードの再利用が容易になり、大規模プロジェクトの開発にうまく適用できます。
6. 一方向の応答データ フロー - React は一方向の応答データ フローを実装しているため、重複するコードが削減されます。そのため、従来のデータ バインディングよりもシンプルになります。
Reactはユーザーインターフェイスを構築するために使用されるJAVASCRIPTライブラリであるため、最初に3つのjsファイルを参照し、それらをダウンロードしてローカルで参照することもできます。
<script src="https://cdn.bootcss.com/react/15.4.2/react.min.js"></script> <script src="https://cdn.bootcss.com/react/15.4.2/react-dom.min.js"></script> <script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.min.js"></script> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="react.js"></script> <script src="react-dom.js"></script> <script src="babel.min.js"></script> <script src="01.js" type="text/babel"></script> </head> <body> <p id="content"></p> </body> </html>
react.min.js - React 的核心库 react-dom.min.js - 提供与 DOM 相关的功能 babel.min.js - Babel 可以将 ES6 代码转为 ES5 代码,这样我们就能在目前不支持 ES6 浏览器上执 行 React 代码。Babel 内嵌了对 JSX 的支持。通过将 Babel 和 babel-sublime 包(package) 一同使用可以让源码的语法渲染上升到一个全新的水平。ログイン後にコピー
2.1 メソッド 1:
class MyTextView extends React.Component{ render(){ return <p>hello react</p>; } } //组件渲染到DOM中 ReactDOM.render(<MyTextView></MyTextView>,document.body);
は React.Componet を継承する必要があります
render() レンダリング関数が必要です
> 仮想 DOM を作成するために必要なメソッドであり、このメソッドには特別な機能がありますルール:
1. データは this.props と this.state を通じてのみアクセスできます
2. null、false または任意の React コンポーネントを返すことができます
3. DOM の出力は変更できません。変更できません
var MyTexTiew2 = React.createClass( { render:function () { return <p>hi react</p>; } } ); ReactDOM.render(<MyTexTiew2></MyTexTiew2>,document.body);
State は、主にインターフェイスを更新するために使用されます。コンポーネントの State プロパティは、コンポーネントの this.setState を呼び出して状態を変更するときに初期化されます。再レンダリングされて更新されます。React コンポーネントのライフサイクルインスタンス化最初のインスタンス化Props は主にコンポーネント間でデータを転送するために使用されます。つまり、ラベルの属性は、MyText の this.props.pname を通じて取得できます
var MyTextView = React.createClass( { render:function(){ return <p>content:{this.props.contentText}</p>; } } ); var MyViewGroup = React.createClass({ getInitialState:function () { //生命周期函数,返回一个对象 return {text:""}; }, handleChange:function (e) { //改变组件的state属性 this.setState({text:e.target.value}); }, render:function () { return <p> <MyTextView contentText ={this.state.text}/> //注意属性onChange大写 <input type="text" onChange={this.handleChange} ></input> </p>; } }); ReactDOM.render(<MyViewGroup/>,document.getElementById("content"));ログイン後にコピー
デフォルトプロップを取得する
初期状態を取得する
コンポーネントウィルマウント
レンダリング
ComponentDidMount
初期状態を取得する
コンポーネントウィルマウント
レンダリング
ComponentDidMount
コンポーネントが既に存在する場合の状態変化
コンポーネントWillReceiveProps
shouldコンポーネント更新
コンポーネントの更新
レンダリング
コンポーネントDidUpdate
ComponentWillUnmount
コンポーネント クラスに作用し、返されたオブジェクトはデフォルトの小道具を設定するために使用されます。参照値はインスタンス間で共有されます。
コンポーネントのインスタンスに作用し、インスタンスの作成時に一度呼び出され、この時点で This.props にアクセスできます。
最初のレンダリングが完了する前に呼び出されますが、この時点でもコンポーネントの状態を変更できます。 (さらに詳しく知りたい場合は、PHP 中国語 Web サイト
React Reference Manual のコラムにアクセスして学習してください)
4.render
必选的方法,创建虚拟DOM,该方法具有特殊的规则:
只能通过this.props和this.state访问数据
可以返回null、false或任何React组件
只能出现一个顶级组件(不能返回数组)
不能改变组件的状态
不能修改DOM的输出
5.componentDidMount
真实的DOM被渲染出来后调用,在该方法中可通过this.getDOMNode()访问到真实的DOM元素。此时已可以使用其他类库来操作这个DOM。
在服务端中,该方法不会被调用。
6.componentWillReceiveProps
组件接收到新的props时调用,并将其作为参数nextProps使用,此时可以更改组件props及state。
componentWillReceiveProps: function(nextProps) { if (nextProps.bool) { this.setState({ bool: true }); } }
7.shouldComponentUpdate
组件是否应当渲染新的props或state,返回false表示跳过后续的生命周期方法,通常不需要使用以避免出现bug。在出现应用的瓶颈时,可通过该方法进行适当的优化。
在首次渲染期间或者调用了forceUpdate方法后,该方法不会被调用
8.componentWillUpdate
接收到新的props或者state后,进行渲染之前调用,此时不允许更新props或state。
9.componentDidUpdate
完成渲染新的props或者state后调用,此时可以访问到新的DOM元素。
10.componentWillUnmount
组件被移除之前被调用,可以用于做一些清理工作,在componentDidMount方法中添加的所有任务都需要在该方法中撤销,比如创建的定时器或添加的事件监听器。
通过集成extends React.Component 给组件初始化不会执行getDefaultProps、getInitialState
只有通过以下方式给组件初始化state和props
1、state的初始化,通过构造函数
//在构造函数中对状态赋初始值 constructor(props){ super(props);//第一步,这是必须的 //不能调用state this.state = {//第二步,赋初始值 time:0, on:false, log:[] //数组 }; }
2、props的初始化
class Button extends React.Component{ //静态属性,给属性赋默认值 static defaultProps = { onClick : null, className : '', text : '默认' }; render(){ return <button className={`Button ${this.props.className}`} onClick={this.props.onClick}>{this.props.text}</button>; }
本篇文章到这就结束了(想看更多就到PHP中文网React使用手册栏目中学习),有问题的可以在下方留言提问。
以上がReact の基本的な構文は何ですか? React の基本構文の紹介 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。