1. 程式人生 > >React js屬性和狀態的使用和區別

React js屬性和狀態的使用和區別

React js的屬性和狀態

屬性:props    一般屬性是不改變的,經常作為傳入的資料.

例: 建立PropsTest控制元件,從網頁上輸出簡單的  Hello, XXX, XXX為傳入的屬性name,當name為空時,輸出Hello,World   輸入為其他值時,比如:Curry,輸出Hello,Curry

<script type="text/babel">
    var PropsTest = React.createClass( {
        render: function () {
            return (
                    <div>
                        Hello, {this.props.name? this.props.name: "World"}
                    </div>
            );
        }
    });
    ReactDOM.render(
            <PropsTest name="Curry"/>,
            document.body
    );
</script>

狀態:state  一般狀態是不斷變化的,空間內部可以控制state的變化

: 建立StateTest控制元件,實現在輸入框中輸入資料XXX,輸入Hello, XXX.  XXX隨著輸入框的輸入內容而改變.  

render方法中定義<div>Hello, {this.state.name}</div>,   定義input,並新增onChange方法textChange, 在方法裡面程式碼實現name的值隨輸入的值改變

程式碼如下:

<script type="text/babel">
    var StateTest = React.createClass( {
        getInitialState: function () {
            return {
                name: 'World'
            }
        },
        textChange: function (event) {
            this.setState({
                name: event.target.value
            });
        },
        render: function () {
            return (
                    <div>
                        <p>Hello, {this.state.name}</p>
                        <input type="text" onChange={this.textChange} />
                    </div>
            );
        }
    });
    ReactDOM.render(
            <StateTest />,
            document.body
    );
</script>

區分:  元件在執行時需要修改的資料時狀態

狀態和屬性的相似點: 1,是純js物件

                                2,改變會觸發render方法

                     不同點: 1,屬性值可以由父類傳入,狀態值不能

                                       2,屬性值不在元件內部修改,而狀態值就是在元件內部修改的

相關推薦

React js屬性狀態的使用區別

React js的屬性和狀態 屬性:props    一般屬性是不改變的,經常作為傳入的資料. 例: 建立PropsTest控制元件,從網頁上輸出簡單的  Hello, XXX, XXX為傳入的屬性name,當name為空時,輸出Hello,World   輸入為其他值時,比如:Curry,輸出He

React:JS中的this箭頭函數

-c c++ upload per 初始 正常 develop pan pre JS中的this和純面向對象(java,c++)中的this有點不大一樣,其原因就是作用域不同,導致JS中的this的指向不明確,在java中的this指當前對象的this或當前類的this,在

React Native 屬性.樣式.狀態

一. HelloWord 1.初始化工程 react-native init Hello cd Hello react-native run-ios 這個有一點要注意,博主是在終端直接操作的,後來把檔案移動到專門的React Native資料夾裡,移動之後,之前建立的專案都

React 屬性狀態的一些總結

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv='Content-type' content='text/html; charset=utf-8'> 5 <title&

React Props/State/Forms 屬性狀態

狀態(State) 和 屬性(Props) props 是元件對外的介面,state 是元件對內的介面。 元件內可以引用其他元件,元件之間的引用形成了一個樹狀結構(元件樹),如果下層元件需要使用上層元件的資料或方法,上層元件就可以通過下層元件的props屬性進行

js函式帶括號不帶括號賦給物件屬性區別

注意: 1.js為物件新增函式時,不要在函式後面加()。一旦加了括號是表示將函式的返回值賦給物件的屬性。 例:function test(){   document.writeln("我是js函式") } var obj = new Object(); obj.info=new function(

Vue.js中計算屬性方法的區別

在vue.js中,計算屬性和方法達到的效果是一樣的,但是計算屬性是基於依賴進行快取的,只有message發生改變才會導致reverseMessage發生改變,只要 message 還沒有發生改變,多次訪問 reversedMessage 計算屬性會立即返回之前的計算結果,而不

jQueryjs一些標籤屬性的獲取修改方法以及區別

因為自己總是在jQuery和js寫function的時候,總是把兩者之間混淆,一直想總結以下這2這區別和使用的方式,所以就查了下,再加上了自己平時記錄的,總結下,為了下次自己再次混淆的時候可以直接看自己的部落格查詢,同時也給大家提供便利,以下有轉載的部分,我已經提供了出處,

js對象 對屬性調用.[] 兩種方式遇到過得區別

rop url 賦值 表達式 type 認識 表達 strong 錯誤 1 .標準格式是對象.屬性(不帶雙引號) 註意一點的是js對象的屬性,key標準是不用加引號的,加也可以,特別的情況必須加,如果key數字啊,表達式啊等等,加引號是為了將其視為整體,認識一點

JS中isPrototypeOf hasOwnProperty 的區別

另一個 strong 是否 指定 不同 名稱 功能 成員 eof 1、isPrototypeOf isPrototypeOf是用來判斷指定對象object1是否存在於另一個對象object2的原型鏈中,是則返回true,否則返回false。 格式如下: object1.is

JS中數組對象的區別

src 區別 nbsp log 對象 img images image ima JS中數組和對象的區別

textbox的enabled屬性readonly的區別

don ext 輸入 led 事件 屬性 文本框 更改 12月 2013年12月11日寫到: enabled屬性設置成false的時候,不會和用戶進行交互,即用戶不能輸入,但是可以用代碼給文本框賦值。不能進行各種界面上的操作,比如不回應單擊,雙擊,leave事件等。read

js中undefinednull的區別

常常 html exist tex 輸出 output 為什麽 hive 存在 轉自:http://www.cnblogs.com/eastday/archive/2010/03/03/1677324.html 在JavaScript中存在這樣兩種原始類型:Null與Und

js =====以及!= !==的區別

true style cnblogs 基礎類型 family var ber 16px 運算 一、js == 與 === 的區別[轉] 1. 對於string,number等基礎類型,==和===是有區別的   1)不同類型間比較,==之比較“轉化成同一類型後的值”看“

js中eval()$.parseJSON()的區別

16px 異常 comment 而不是 str on() ajax 鏈接 強制 之前自己一直對ajax不是特別的熟悉,所以一般都很少用這個去寫功能,但是最近這個項目中用到了,用ajax異步傳數據,json傳數據這個時候就需要去解析傳過來的數據了,eval()和$.parse

Js中callercallee的區別

存在 ons var nbsp fun 區別 test 函數對象 返回 1 :caller 返回一個調用當前函數的引用 如果是由頂層調用的話 則返回null (舉個栗子哈 caller給你打電話的人 誰給你打電話了 誰調用了你 很顯然是下面a函數的執行 只有在打電話的時候

js學習總結----callapplybind的區別

style 效果 兩個 是我 define 學習 處理 blog call() apply和call的方法是一模一樣的,都是用來改變方法的this關鍵字,並且把方法執行:而且在嚴格模式和非嚴格模式下對於第一個參數是null/undefined這種情況的規律是一樣的; bin

js中觸摸相關變量touches,targetToucheschangedTouches的區別

屬性 style 相同 pan tar chang color code bsp touches: 當前屏幕上所有觸摸點(手指)的列表; targetTouches: 當前DOM元素上所有觸摸點(手指)的列表; changedTouches: 涉及當前事件的觸摸點(手指

JS 中的require import 區別

js模塊化 version 函數名 比較 extc 做到 logs imp 變量 在研究react和webpack的時候,經常看到在js文件中出現require,還有import,這兩個都是為了JS模塊化編程使用。CSS的是@import 1.ES6 模塊的設計思想,是盡量

CSS 屬性 - 偽類偽元素的區別

習慣 div 個人觀點 養成 pseudo line 現象 let first 先說一種我們寫CSS時候常見的現象,::before和:after中雙冒號和單冒號會在寫CSS中經常看到。為什麽會有單冒號跟雙冒號兩種寫法呢? 其實主要是為了區分偽類和偽元素 偽類:偽類用於