react學習記錄 state vs props

2021-10-07 12:57:15 字數 1121 閱讀 3552

state的主要作用,是用於元件儲存、控制、修改自己的可變狀態。一言概之,它在元件內部初始化、只能被元件自身修改,外部不能訪問也不能修改。

所以state是乙個區域性的、只能被元件自身控制的資料來源,它的更新方式上通過setstate,同時setstate會導致元件的重新渲染。

props的主要作用則是讓元件的父元件可以傳入一些配置引數,去定製該子元件。它從外部傳入,元件內部無法控制也無法修改。除非元件外部主動傳入新的props,否則元件的props將是不可變的。

它們都可以決定元件的行為和顯示狀態,職責很明晰:state是讓元件控制自己的狀態,props是讓外部對元件自己進行配置

如果很難搞清它們的使用場景,只需要記得開發中盡量少用state,多用props。

沒有state的元件叫無狀態元件(stateless component),設定了 state 的叫做有狀態元件(stateful component)。因為狀態會帶來管理的複雜性,我們盡量多地寫無狀態元件,盡量少地寫有狀態的元件。這樣會降低**維護的難度,也會在一定程度上增強元件的可復用性。

react.js 非常鼓勵無狀態元件,在 0.14 版本引入了函式式元件——一種定義不能使用state元件,這導致我們必須使用props去傳入引數,例如乙個類元件原來這麼寫:

class helloworld extends component 

sayhi ()

render ()

}

用函式式元件這麼寫:

const helloworld = (props) =>
使用函式式元件的編寫方式,代表乙個函式就是乙個元件,不同於繼承component的類元件,函式式元件只能接受props,而無法像類元件一樣有建構函式去初始化state。

可以理解函式式元件就是一種只能接受props並提供render方法的類元件,react鼓勵寫無狀態元件,應該也是為了能夠更好地過渡到函式式程式設計這種新趨勢(個人理解)。

當然入門還是寫類元件吧,函式式元件好像還是有一些坑要踩的…

react學習記錄(四)

自閉了。以前以為我學過js,並且會js。現在我想說,我不會js,我可能只是聽說過js。我一直都知道js的三個組成部分 ecmascript bom dom 以前沒有怎麼在意,現在是真的知道js確實是3個部分。可能bom和dom的內容更加多一些。render handdelet 學了半天也沒有收穫什麼...

React學習記錄 Redux

入門 官網react.js 小書 父向子孫傳值用props import from redux export default function 第二步 根據計算規則生成 store let store createstore counter 第三步 定義資料 即 state 變化之後的派發規則 根據...

業餘學習react 學習記錄

阮一峰 react 學習 1.搭建環境 npm 使用 react 專案名 npm start webpack 命名 執行 2.命名行 npm start npm run build npm test npm run eject 3.reactdom.render 是 react 的最基本方法,用於將...