React中props使用介紹
1.繼續(xù)深入state
state有兩種用法:
setState({}) 和 setState(()=>{})
第一種用法本質(zhì)是:我寫了這個屬性,然后進行覆蓋操作。
第二種用法好處是:回調(diào)函數(shù)中的第一個參數(shù)是state。這樣的話看起來獲取到原先state上的數(shù)據(jù)也更加簡單!
setState修改數(shù)據(jù)實現(xiàn)響應(yīng)式的本質(zhì)
在每次修改之后,會重新調(diào)用render函數(shù)。
2.props
什么是props?
? props 是組件傳遞的參數(shù)。子組件通過this.props來接受!
在類組件中:
props通過子組件的this.props來接受父組件傳過來的props值。
組件是可以復用的,最常見的就是循環(huán)來使用。與Vue不同的是:React他沒有指令這一說法。jsx語法會自動循環(huán)數(shù)組。通常處理數(shù)組都采用高階函數(shù)。例如
沒有循環(huán)的用法:
<div class="box1"></div> <script src="../../js/react.development.js"></script> <script src="../../js/react-dom.development.js"></script> <script src="../../js/babel.min.js"></script> <script type="text/babel"> // 子組件 class Info extends React.Component { render() { const { name, age, sex } = this.props return <div> <h2>子組件Child</h2> <div>姓名: {name}</div> <div>年齡: {age}</div> <div>性別: {sex}</div> </div> } } // 父組件 class Demo extends React.Component { state = { arr: [ { name: '北幕', age: 18, sex: "man" }, { name: '北幕', age: 18, sex: "man" }, { name: '北幕', age: 18, sex: "man" } ] } render() { return ( <div> <h1>我是Demo組件</h1> <hr /> <Info name="耀陽" age="18" sex="男"></Info> <Info name="呂德華" age="18" sex="男"></Info> <Info name="北幕" age="18" sex="男"></Info> </div> ) } } ReactDOM.render(<Demo></Demo>, document.querySelector('.box1')) </script>
有循環(huán)的用法
<div class="box1"></div> <script src="../../js/react.development.js"></script> <script src="../../js/react-dom.development.js"></script> <script src="../../js/babel.min.js"></script> <script type="text/babel"> // 子組件 class Info extends React.Component { render() { const { name, age, sex } = this.props return <div> <h2>子組件Child</h2> <div>姓名: {name}</div> <div>年齡: {age}</div> <div>性別: {sex}</div> </div> } } // 父組件 class Demo extends React.Component { state = { arr: [ { name: '北幕', age: 18, sex: "man" }, { name: '北幕', age: 18, sex: "man" }, { name: '北幕', age: 18, sex: "man" } ] } render() { return ( <div> <h1>我是Demo組件</h1> <hr /> { this.state.arr.map(item => <Info name={item.name} age={item.age} sex={item.sex} ></Info>) } </div> ) } } ReactDOM.render(<Demo></Demo>, document.querySelector('.box1')) </script>
Props幾個特點:
子組件不能修改傳遞的Props數(shù)據(jù),只能由父組件來修改,或者從數(shù)據(jù)的源頭來修改。
父組件傳遞參數(shù),可以是其他的類型,利用jsx語法:{},跟vue的插值語法類似:都是js表達式!
父組件傳遞多個數(shù)據(jù){…obj}
對象解構(gòu)還是對象?。?!
<div class="box1"></div> <script src="../../js/react.development.js"></script> <script src="../../js/react-dom.development.js"></script> <script src="../../js/babel.min.js"></script> <script type="text/babel"> // 子組件 class Info extends React.Component { render() { const { name, age, sex } = this.props return <div> <h2>子組件Child</h2> <div>姓名: {name}</div> <div>年齡: {age}</div> <div>性別: {sex}</div> </div> } } // 父組件 class Demo extends React.Component { state = { obj: { name: "耀陽1", age: "18", sex: "男" } } render() { return ( <div> <h1>我是Demo組件</h1> <hr /> <Info {...this.state.obj}></Info> <Info name="呂德華" age="18" sex="男"></Info> <Info name="北幕" age="18" sex="男"></Info> </div> ) } } ReactDOM.render(<Demo></Demo>, document.querySelector('.box1')) </script>
3.限制Props的傳遞類型
子組件接收父組件的類型,父組件可以隨意的定義,
? a. 子組件限制父組件傳遞的數(shù)據(jù)類型
? b. 引入prop-types庫
? c. 需要在類上設(shè)置一個屬性 propTypes,誰想限制給誰設(shè)置。寫在類上面方法(靜態(tài)方法)
? d. 設(shè)置默認值 defaultProps = {}
這個不需要記住,用的時候查閱即可!
限制類型的簡寫:可以使用static靜態(tài)方法。
4.函數(shù)接收props參數(shù)
函數(shù)中的state在hook中才能使用。暫時先不考慮。
函數(shù)的第一個參數(shù)就是props,在函數(shù)中只需要用第一個參數(shù)來接受即可
5.插槽
props下面的Childrene
到此這篇關(guān)于React中props使用介紹的文章就介紹到這了,更多相關(guān)React props內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React組件內(nèi)事件傳參實現(xiàn)tab切換的示例代碼
本篇文章主要介紹了React組件內(nèi)事件傳參實現(xiàn)tab切換的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07React.memo函數(shù)中的參數(shù)示例詳解
這篇文章主要為大家介紹了React.memo函數(shù)中的參數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09React Native之prop-types進行屬性確認詳解
本篇文章主要介紹了React Native之prop-types進行屬性確認詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12