<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        React props和state屬性的具體使用方法

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:16:53
        文檔

        React props和state屬性的具體使用方法

        React props和state屬性的具體使用方法:在上一節(jié)中,我們講到了React組件,說了如何使用ES6類創(chuàng)建一個React組件并在其他的地方使用它。這一節(jié)我們將講到React組件的兩大靈魂——props和state。 props 不知道大家還記不記得xml標簽中的屬性,就像這樣: <class id=1>
        推薦度:
        導讀React props和state屬性的具體使用方法:在上一節(jié)中,我們講到了React組件,說了如何使用ES6類創(chuàng)建一個React組件并在其他的地方使用它。這一節(jié)我們將講到React組件的兩大靈魂——props和state。 props 不知道大家還記不記得xml標簽中的屬性,就像這樣: <class id=1>

        在上一節(jié)中,我們講到了React組件,說了如何使用ES6類創(chuàng)建一個React組件并在其他的地方使用它。這一節(jié)我們將講到React組件的兩大靈魂——props和state。

        props

        不知道大家還記不記得xml標簽中的屬性,就像這樣:

        <class id="1">
         <student id="1">John Kindem</student>
         <student id="2">Alick Ice</student>
        </class>
        

        這樣一個xml文件表達的意思是1班有兩個學生,學號為1的學生名字為John Kindem,學號為2的學生名字為Alick Ice,其中id就是屬性,你可以把它看做一個常量,它是只讀的。

        html繼承自xml,而JSX從莫種意義上又是html和js的擴展,屬性的概念自然得到了傳承。

        在React中,我們使用props這一概念向React組件傳遞只讀的值,就像這樣:

        // 假設(shè)我們已經(jīng)自定義了一個叫Hello的組件
        ReactDom.render(
         <Hello firstName={'John'} lastName={'Kindem'}/>,
         document.getElementById('root')
        );
        

        在調(diào)用React組件的時候,我們可以像上面一樣向組件傳遞一些常量,以便組件在內(nèi)部調(diào)用。而調(diào)用的方法,就像下面這樣:

        class Hello extends React.Component {
         constructor(props) {
         super(props);
         }
        
         render() {
         return (
         <div>
         <h1>Hello, {this.props.firstName + ' ' + this.props.lastName}</h1>
         </div>
         );
         }
        }
        
        ReactDom.render(
         <Hello firstName={'John'} lastName={'Kindem'}/>,
         document.getElementById('root')
        );
        
        

        在組件內(nèi)部獲取傳遞過來的props,只需要使用this.props對象即可,但是在使用之前,記得復寫組件的構(gòu)造函數(shù),并且接受props的值以調(diào)用父類構(gòu)造。

        當然,props也能夠設(shè)置默認值,向下面這樣:

        class Hello extends React.Component {
         constructor(props) {
         super(props);
         }
        
         static defaultProps = {
         firstName: 'John',
         lastName: 'Kindem'
         };
        
         render() {
         return (
         <div>
         <h1>Hello, {this.props.firstName + ' ' + this.props.lastName}</h1>
         </div>
         );
         }
        }
        
        ReactDom.render(
         <Hello/>,
         document.getElementById('root')
        );
        
        

        只需在ES6類中聲明一個static的props默認值即可,運行效果和上面一樣。

        props沒有多復雜,稍微練習即可習得。

        state、組件生命周期

        你可能回想,如果我想在React組件中添加動態(tài)效果怎么辦?目前學過的知識好像無法解決這一問題。

        這一問題需要使用React組件的state來解決,state即狀態(tài)的意思,在React中,所有會變化的控制變量都應該放入state,每當state中的內(nèi)容變化時,頁面的相應組件將會被重新渲染,另外,state完全是組件內(nèi)部的東西,外部無法向內(nèi)部傳遞state,也無法直接改變state的值。

        先來舉一個例子:

        import React from 'react';
        import ReactDom from 'react-dom';
        
        class Time extends React.Component {
         constructor(props) {
         super(props);
        
         // 初始化state
         this.state = {
         hour: 0,
         minute: 0,
         second: 0
         }
         }
        
         componentDidMount() {
         this.interval = setInterval(() => this.tick(), 1000);
         }
        
         componentWillUnmount() {
         clearInterval(this.interval);
         }
        
         tick() {
         // 計算新時間
         let newSecond, newMinute, newHour;
         let carryMinute = 0, carryHour = 0;
         newSecond = this.state.second + 1;
         if (newSecond > 59) {
         carryMinute = 1;
         newSecond -= 60;
         }
         newMinute = this.state.minute + carryMinute;
         if (newMinute > 59) {
         carryHour = 1;
         newMinute -= 60;
         }
         newHour = this.state.hour + carryHour;
         if (newHour > 59) newHour -= 60;
        
         // 設(shè)置新狀態(tài)
         this.setState({
         hour: newHour,
         minute: newMinute,
         second: newSecond
         });
         }
        
         render() {
         return (
         <div>
         <h1>current time: {this.state.hour + ':' + this.state.minute + ':' + this.state.second}</h1>
         </div>
         );
         }
        }
        
        ReactDom.render(
         <Time/>,
         document.getElementById('root')
        );
        
        

        這樣就完成了一個計數(shù)器,數(shù)值一秒鐘變化一次,來講解一下代碼:首先,state的初始化是在構(gòu)造函數(shù)中,像這樣:

        constructor(props) {
         super(props);
        
         // 在這初始化state
         this.state = {
         ...
         }
        }
        
        

        而改變state是使用React組件基類中的一個自帶函數(shù):

        this.setState({
         ...
        });
        

        使用這個函數(shù)之前一定要注意this的作用域,箭頭函數(shù)中的this指向外部this,而普通函數(shù)中的this指向函數(shù)本身。

        另外,這里使用到了兩個React組件的生命周期回調(diào):

        componentDidMount() {
         // React組件被加載到dom中的時候被調(diào)用
         ...
        }
        
        componentWillUnmount() {
         // React組件從dom中卸載的時候被調(diào)用
         ...
        }
        
        

        所以這樣一下上面的計時器代碼應該就不是什么難事了,在React組件被加載到dom中的時候設(shè)置一個計時器,每秒鐘更新一次state,state更新的同時頁面中的組件將會被重新渲染,而當組件被卸載的時候,則需要清除定時器,就那么簡單。

        不過React對于state的更新頻率,有一個最大的限度,超過這個限度則會導致頁面渲染的性能下降,大家需要注意不要在高頻函數(shù)中使用setState。

        這一節(jié)React輕松入門就到這了,下一節(jié),我將會為大家介紹React組件的事件處理。如果覺得文章有幫助,請關(guān)注我,我會持續(xù)更新,為大家獻上更好更優(yōu)質(zhì)的文章!

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        React props和state屬性的具體使用方法

        React props和state屬性的具體使用方法:在上一節(jié)中,我們講到了React組件,說了如何使用ES6類創(chuàng)建一個React組件并在其他的地方使用它。這一節(jié)我們將講到React組件的兩大靈魂——props和state。 props 不知道大家還記不記得xml標簽中的屬性,就像這樣: <class id=1>
        推薦度:
        標簽: 使用 的方法 rea
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 福利片免费一区二区三区| 亚洲熟妇无码八V在线播放| 国产成人无码区免费网站| 久久久久亚洲av成人无码电影| 亚洲AV日韩AV一区二区三曲| 日本免费中文字幕在线看| 在线观看亚洲视频| 亚洲区不卡顿区在线观看| 三级片免费观看久久| 亚洲综合最新无码专区| 成人网站免费看黄A站视频| 亚洲AV无码精品无码麻豆| 57pao一国产成视频永久免费| 亚洲人成伊人成综合网久久| 成人性生活免费视频| 国产天堂亚洲国产碰碰| 久久久久一级精品亚洲国产成人综合AV区 | 亚洲成a人片在线观看中文app| 无码中文在线二区免费| 亚洲精品无码人妻无码| 亚洲精品一级无码中文字幕 | 国产在线观看麻豆91精品免费| 亚洲AV一二三区成人影片| 日本一道一区二区免费看| 一级特黄录像视频免费| 亚洲精品乱码久久久久久中文字幕 | 亚洲成av人片天堂网| 久久精品国产免费观看三人同眠| 亚洲人成色在线观看| 国产成人A亚洲精V品无码| 在线a免费观看最新网站| 亚洲国产精品成人午夜在线观看 | 成人激情免费视频| 久久久久免费视频| 亚洲成人网在线播放| 亚洲国产人成中文幕一级二级| 精品国产污污免费网站| 亚洲精品无AMM毛片| 香蕉视频在线观看亚洲| 国产精品免费综合一区视频| 久久精品一本到99热免费|