React-Native中props用法詳解


props就是屬性,是為了描述一個組件的特征而存在的。它是父組件傳遞給子組件的。

使用props

通過上一個頁面傳遞

新建一個 PropsTest.js 文件

 

1

2

3

4

5

exprot default class PropsTestextendesComponent{

  render(){

    return <Text>{this.props.name}</Text>

  }

}

在上一個頁面中使用PropsTest組件

 

1

2

3

4

5

import PropsTest from './PropsTest'

 

<PropsTest

  name = 'XiaoMing'

/>

注意: 上方代碼,均為代碼片段。

默認屬性,以及它的作用

由於props的屬性都是上個頁面傳遞的,所以無法修改它。但是我們可以在PropsTest文件中,給props定義一些默認的值。

 

1

2

3

4

5

6

7

8

exprot default class PropsTestextends Component{

  static defaultProps={

    name: 'XiaoHong'

  }

  render(){

    return <Text>{this.props.name}</Text>

  }

}

注意,defaultProps 需要使用static關鍵字來做靜態修飾。這樣,如果上個頁面沒有傳值,則顯示的是這個默認的屬性。

對props進行約束和檢查

 

1

2

3

4

5

6

7

8

9

10

11

12

13

exprot default class PropsTestextends Component{

  static defaultProps={

    name: 'XiaoHong'

  }

  static propTypes={

    name: PropTypes.string,

    age: PropTypes.number,

    sex: PropTypes.string.isRequired

  }

  render(){

    return <Text>{this.props.name}</Text>

  }

}

對props里面的屬性進行類型判斷,可以使用propTypes來做到,同樣需要使用static關鍵字來修飾。

isRequired 可以指定必填項

注意:

propTypes屬性 在 react 包中,需要先導入才能使用。

props延伸操作符

ES6的最新語法

假如我們的組件需要好多屬性,如下:

 

1

2

3

4

5

6

7

8

9

params = {name: 'XiaoZhang', age: 18, sex: '男'}

 

// 如果需要傳遞給下一個頁面需要:

<PropsTest

  name = {params.name}

  sex = {params.sex}

  age = {params.age}

/>

// 等等,這樣如果屬性特別多,代碼將會變得難以維護。

在ES6中可以使用最新的延伸操作符特性

 

1

2

3

<PropsTest

  {...params}

/>

非常的簡潔

props解構賦值

ES6的最新語法

通過延伸操作符傳遞的對象,在另一個組件中想要從中獲取某幾個來使用,可以用解構賦值的方式

 

1

2

3

4

5

6

7

8

9

var {name, age} = params;

 

// 其他地方就可以直接引用name和age了

 

{name}或{age}

 

// 這么做的好處,同樣是不需要使用如下的傳統方式

 

{params.name}或{params.age}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM