React 基本概念1

基礎

打開如下網址 http://codepen.io/gaearon/pen/ZpvBNJ

試著把script的內容改為

var HelloMessage = React.createClass({
  render: function() {
    return <div>Hello {this.props.name}</div>;
  }
});

ReactDOM.render(<HelloMessage name="hihi" />, document.getElementById('root'));

也可以試著把script的內容改為(使用ES6)

class HelloMessage extends React.Component {
  render() {
    return <div>Hello {this.props.name}</div>;
  }
}

ReactDOM.render(<HelloMessage name="apple"/>, document.getElementById('root'));

基本React 元件構造

import React,{Component} from 'react';

class BaseComponent extends Component{

  constructor(props){
    super(props);
  }

}

export default BaseComponent

2.HTML與JSX

http://magic.reactjs.net/htmltojsx.htm

以前我們將HTML和JS分開寫,但React將頁面的畫面和邏輯全寫在JS內,而這個JS名稱為JSX,下面為JSX和HTML的簡單轉換對照圖

HTML

  1. style改為物件的寫法

  2. class改為className

  3. React的component名字字母須大寫(與一般HTML tag區別)

  4. function直接寫 functionName() { } 即可

3.Component內傳遞data方式

一個component指的是一個class,下面為最基本的ES6 React component構造

而傳遞方式在我們使用Redux等框架前,主要使用state和prop傳遞

  1. Props 主要為父元件傳遞下來的屬性

  2. state為在一個component中容易被改變的data

簡單來說,props通常主要是用來父子間傳遞data用,而state是來記錄data目前的數值的,例如像server request後將data先存到state再改變畫面

props範例

一個名為 Comment 的component

在父component呼叫

試著把剛才codepen改為如下

而最後會產生如下

State範例

接著把codepen改為

將產生如下

你可能會看過getInitialState但在ES6可直接寫為

即可

而設定state可用setState()

把codepen改為如下,點擊按鈕改變state

下面介紹React.js兩個常用的生命週期方法

1.componentDidMount方法,用途為在元件載入到頁面後所要執行的函式,類似於jquery中的$(document).ready()方法

2.componentWillMount方法,會在元件渲染到頁面前執行

其他生命週期方法還包含

PropTypes

功能:用來檢查型別

貼上下面程式碼,然後開啟console,之後把title="123" 刪除

Refs

功能:用來取得DOM並且進行操作

Last updated

Was this helpful?