最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react中props 的使用及進(jìn)行限制的方法

 更新時(shí)間:2021年04月28日 17:18:25   作者:河軟小寶  
這篇文章主要介紹了react中的props 的使用及進(jìn)行限制的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

組件的props( props是一個(gè)對(duì)象 )

作用:接收傳遞給組件的數(shù)據(jù)
特點(diǎn):

  • 可以給組件傳遞任意類型的數(shù)據(jù)
  • props是只讀的對(duì)象,只能讀取屬性的值,無(wú)法修改對(duì)象
  • 注意:使用類組件時(shí),如果寫(xiě)了構(gòu)造函數(shù),應(yīng)該將props傳遞給super(),否則,無(wú)法在構(gòu)造函數(shù)中獲取到

props props 的使用

 <div id="test1"></div>
  <div id="test2"></div>
  <div id="test3"></div>
  <!-- 引入react核心庫(kù) -->
  <script src="../js/react.development.js"></script>
  <!-- 引入react-dom,用于支持react操作dom -->
  <script src="../js/react-dom.development.js"></script>
  <!-- 引入babel 用于將jsx 轉(zhuǎn)換為 js -->
  <script src="../js/babel.min.js"></script>
  <script type='text/babel'>
  // 創(chuàng)建組件
  class Person extends React.Component{
    render() {
      console.log(this);
      const{name,age,sex} = this.props
      return(
        <ul>
          <li>姓名:{name}</li>
          <li>性別:{sex}</li>
          <li>年齡:{age+1}</li>
        </ul>
      )
    }
  }
  // 渲染組件到頁(yè)面
  ReactDOM.render(<Person name="jerry" age={19} sex="男" />,document.getElementById('test1'))
  ReactDOM.render(<Person name="tom" age={18} sex="女" />,document.getElementById('test2'))

  const p = {name:'老劉',age:18,sex:'女'}
  // ReactDOM.render(<Person name={p.name} age={p.age} sex={p.sex} />,document.getElementById('test3'))
  
  ReactDOM.render(<Person {...p} />,document.getElementById('test3'))

  </script>

對(duì)props進(jìn)行限制

一定要引入 prop-types.js 否則會(huì)報(bào)錯(cuò)

<div id="test1"></div>
  <div id="test2"></div>
  <div id="test3"></div>
  <!-- 引入react核心庫(kù) -->
  <script src="../js/react.development.js"></script>
  <!-- 引入react-dom,用于支持react操作dom -->
  <script src="../js/react-dom.development.js"></script>
  <!-- 引入babel 用于將jsx 轉(zhuǎn)換為 js -->
  <script src="../js/babel.min.js"></script>
  <!-- 引入prop-types, 用于對(duì)組件標(biāo)簽屬性進(jìn)行限制 引入后全局就多了一個(gè)對(duì)象 PropTypes -->
  <script src="../js/prop-types.js"></script>

  <script type='text/babel'>
  // 創(chuàng)建組件
  class Person extends React.Component{
    render() {
      console.log(this);
      const{name,age,sex} = this.props
      return(
        <ul>
          <li>姓名:{name}</li>
          <li>性別:{sex}</li>
          <li>年齡:{age+1}</li>
        </ul>
      )
    }
  }
  // 限制規(guī)則
  Person.propTypes = {
    // 限制name 內(nèi)容為字符串  isRequired 表示該內(nèi)容為必須的不能省略
    name:PropTypes.string.isRequired,
    // 限制sex為字符串
    sex: PropTypes.string,
    // 限制age為數(shù)值
    age: PropTypes.number,
    // 限制speak為函數(shù)
    speak: PropTypes.func
  }
  Person.defaultProps = {
    sex:'男',// sex 默認(rèn)值 為男
    age:18,
    speak: function() {
        return [1];
    }
  }
  // 渲染組件到頁(yè)面
  ReactDOM.render(<Person name="jerry" age={19} />,document.getElementById('test1'))
  ReactDOM.render(<Person name="tom" age={18} sex="女" />,document.getElementById('test2'))

  const p = {name:'老劉',age:18,sex:'女'}
  // ReactDOM.render(<Person name={p.name} age={p.age} sex={p.sex} />,document.getElementById('test3'))
  
  ReactDOM.render(<Person {...p} />,document.getElementById('test3'))

  </script>

Vue 對(duì)props進(jìn)行限定

我們可以為組件的 prop 指定驗(yàn)證要求,例如你知道的這些類型。如果有一個(gè)需求沒(méi)有被滿足,則 Vue 會(huì)在瀏覽器控制臺(tái)中警告你。這在開(kāi)發(fā)一個(gè)會(huì)被別人用到的組件時(shí)尤其有幫助。

為了定制 prop 的驗(yàn)證方式,你可以為 props 中的值提供一個(gè)帶有驗(yàn)證需求的對(duì)象,而不是一個(gè)字符串?dāng)?shù)組。例如:

Vue.component('my-component', {
  props: {
    // 基礎(chǔ)的類型檢查 (`null` 和 `undefined` 會(huì)通過(guò)任何類型驗(yàn)證)
    propA: Number,
    // 多個(gè)可能的類型
    propB: [String, Number],
    // 必填的字符串
    propC: {
      type: String,
      required: true
    },
    // 帶有默認(rèn)值的數(shù)字
    propD: {
      type: Number,
      default: 100
    },
    // 帶有默認(rèn)值的對(duì)象
    propE: {
      type: Object,
      // 對(duì)象或數(shù)組默認(rèn)值必須從一個(gè)工廠函數(shù)獲取
      default: function () {
        return { message: 'hello' }
      }
    },
    // 自定義驗(yàn)證函數(shù)
    propF: {
      validator: function (value) {
        // 這個(gè)值必須匹配下列字符串中的一個(gè)
        return ['success', 'warning', 'danger'].indexOf(value) !== -1
      }
    }
  }
})

當(dāng) prop 驗(yàn)證失敗的時(shí)候,(開(kāi)發(fā)環(huán)境構(gòu)建版本的) Vue 將會(huì)產(chǎn)生一個(gè)控制臺(tái)的警告。

注意那些 prop 會(huì)在一個(gè)組件實(shí)例創(chuàng)建之前進(jìn)行驗(yàn)證,所以實(shí)例的 property (如 data、computed 等) 在 default 或 validator 函數(shù)中是不可用的。

類型檢查
type 可以是下列原生構(gòu)造函數(shù)中的一個(gè):

String
Number
Boolean
Array
Object
Date
Function
Symbol

額外的,type 還可以是一個(gè)自定義的構(gòu)造函數(shù),并且通過(guò) instanceof 來(lái)進(jìn)行檢查確認(rèn)。例如,給定下列現(xiàn)成的構(gòu)造函數(shù):

function Person (firstName, lastName) {
  this.firstName = firstName
  this.lastName = lastName
}

你可以使用:

Vue.component('blog-post', {
  props: {
    author: Person
  }
})

來(lái)驗(yàn)證 author prop 的值是否是通過(guò) new Person 創(chuàng)建的。

到此這篇關(guān)于react 中的 props 的使用以及進(jìn)行限制的文章就介紹到這了,更多相關(guān)react props進(jìn)行限制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React?Hooks useReducer?逃避deps組件渲染次數(shù)增加陷阱

    React?Hooks useReducer?逃避deps組件渲染次數(shù)增加陷阱

    這篇文章主要介紹了React?Hooks?之?useReducer?逃避deps后增加組件渲染次數(shù)的陷阱詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • React 源碼調(diào)試方式

    React 源碼調(diào)試方式

    這篇文章主要為大家介紹了React源碼調(diào)試方式實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • React 數(shù)據(jù)獲取條件競(jìng)爭(zhēng)原理解析

    React 數(shù)據(jù)獲取條件競(jìng)爭(zhēng)原理解析

    這篇文章主要為大家介紹了React 數(shù)據(jù)獲取條件競(jìng)爭(zhēng)原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • React中的Hooks路由跳轉(zhuǎn)問(wèn)題

    React中的Hooks路由跳轉(zhuǎn)問(wèn)題

    這篇文章主要介紹了React中的Hooks路由跳轉(zhuǎn)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • React18從0實(shí)現(xiàn)dispatch?update流程

    React18從0實(shí)現(xiàn)dispatch?update流程

    這篇文章主要為大家介紹了React18從0實(shí)現(xiàn)dispatch?update流程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • pubsub-js在react中的使用教程

    pubsub-js在react中的使用教程

    pubsub-js?是一個(gè)用于實(shí)現(xiàn)發(fā)布-訂閱模式的 JavaScript 庫(kù),可以用于不同組件之間的通信,在 React 中,可以使用?pubsub-js?來(lái)實(shí)現(xiàn)組件之間的通信,本篇文章給大家講解pubsub-js在react中的使用,感興趣的朋友一起看看吧
    2023-10-10
  • react中antd Upload手動(dòng)上傳的示例

    react中antd Upload手動(dòng)上傳的示例

    本文主要介紹了react中antd Upload手動(dòng)上傳的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • styled-components?性能詳解

    styled-components?性能詳解

    這篇文章主要為大家介紹了styled-components?的性能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • React中useState和useEffect的用法詳解

    React中useState和useEffect的用法詳解

    Hooks?發(fā)布之后,函數(shù)組件能擁有自己的?state,React提供了很多內(nèi)置的Hooks,這篇文章就來(lái)和大家介紹一下useState?和?useEffect的使用,需要的可以參考一下
    2023-06-06
  • react組件實(shí)例屬性props實(shí)例詳解

    react組件實(shí)例屬性props實(shí)例詳解

    這篇文章主要介紹了react組件實(shí)例屬性props,本文結(jié)合實(shí)例代碼給大家簡(jiǎn)單介紹了props使用方法,代碼簡(jiǎn)單易懂,需要的朋友可以參考下
    2023-01-01

最新評(píng)論

加查县| 富宁县| 马山县| 黑龙江省| 襄城县| 泗洪县| 叶城县| 隆尧县| 云安县| 义马市| 遵义县| 抚松县| 平凉市| 奉化市| 波密县| 屯昌县| 宜兰市| 赤壁市| 荣昌县| 长汀县| 牡丹江市| 山东| 通州区| 镇沅| 通许县| 天峨县| 栖霞市| 贡山| 盐山县| 柞水县| 师宗县| 文昌市| 西贡区| 那坡县| 竹山县| 庄河市| 弥勒县| 军事| 岳阳市| 松溪县| 汝州市|