es6 ...運(yùn)算符

情景描述

  • 經(jīng)常會看到...props
  • 無狀態(tài)組件的參數(shù)中
  • 或者是在函數(shù)定義的參數(shù)中

  • 請不要把只要出現(xiàn)...的地方當(dāng)做同一個操作符
    • 剩余操作符
      • 通常用于函數(shù)定義時的最后一個參數(shù)
      • ...a:a是一個數(shù)組
      • 相當(dāng)于是整和
    • 擴(kuò)展語法
      • 類似于結(jié)構(gòu)賦值
      • 相當(dāng)于是將一個對象或者一個數(shù)組中的每一個元素全部都解構(gòu)出來單獨(dú)使用
      • 相當(dāng)于是解構(gòu)

擴(kuò)展語法

  • 用于函數(shù)調(diào)用時的參數(shù)
    const func = (a,b,c) => {
        //*****
    }
    const array = [1,2,3]
    func(...array)
    
    • 當(dāng)做函數(shù)調(diào)用時候的參數(shù)就相當(dāng)于是擴(kuò)展
    • 將每個元素擴(kuò)展開來當(dāng)做函數(shù)的一個參數(shù)
  • 用于react傳遞props屬性
    render() {
      const obj = {name:'zp' ,age: 20}
        return (
          <Children {...obj} />
        )
    }
    
    const Children = (props) => {
        console.log(props.name)
        console.log(props.age)
    }
    
    //這樣的好處:如果不使用擴(kuò)展運(yùn)算符render函數(shù)就需要這么寫
    render() {
      const obj = {name:'zp' ,age: 20}
        return (
          <Children 
          name = {obj.name}
          age={obj.age}
          />
        )
    }
    
    //這就相當(dāng)于把對象的名字作為屬性傳給子組件使用
    大大減少代碼數(shù)量
    
  • 用于數(shù)組的拼接和排序
    const a = [1,2,3]
    const b = [4,5,6]
    const c = [...b,...a]
    
  • 用于reducer,產(chǎn)生新對象(新引用)
    • 對于reducer而言如果返回的對象或者數(shù)組沒有改變引用,他就會認(rèn)為store中的數(shù)據(jù)沒有變化過所以不會觸發(fā)組件重新render(即使可能數(shù)組或?qū)ο笾械哪骋豁棿_實發(fā)生變化)
    • 使用擴(kuò)展運(yùn)算符即使元素沒變(內(nèi)容)也會產(chǎn)生一個全新的對象或者數(shù)組(新引用)一定保證了store可以更新觸發(fā)新的render(可以代替Object.assign存在)
    const initState = {
        name: 'pp',
        age: 20
    }
    const reducer = (action,state) => {
        switch (action.type) {
            case *** : 
              return {...state,{name:'aa'}}
        }
      }
    
    總結(jié):使用擴(kuò)展運(yùn)算符的對象或者數(shù)組,都是為了將其中的每一個元素可以獨(dú)立的使用

剩余操作符

  • 使用場景我見到的好像只有在函數(shù)定義的時候
    • 當(dāng)不確定會返回幾個參數(shù)的時候直接使用...params代替
    • params就會變成一個數(shù)組 收錄傳入的參數(shù)當(dāng)做數(shù)組中的一個元素
    總結(jié):剩余操作符和擴(kuò)展操作符是一個相反的過程,用來將數(shù)據(jù)整合在一個數(shù)組中
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ...運(yùn)算符可用于淺拷貝 深拷貝 用Object.assign(obj)實現(xiàn)深拷貝 淺拷貝 當(dāng)然,我們也可以在淺拷...
    余生筑閱讀 4,130評論 2 1
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,689評論 0 4
  • 三,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進(jìn),只要將碼點(diǎn)放入大括號,就能正確解讀該字符。有了這...
    eastbaby閱讀 1,672評論 0 8
  • 1.函數(shù)參數(shù)的默認(rèn)值 (1).基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。
    趙然228閱讀 832評論 0 0
  • 一開始接觸張愛玲的小說,便是她的中篇小說金鎖記。小說里的主人公曹七巧是個不幸的人,出身低微,家里是開麻油店的,...
    鐵家軍王慶露閱讀 1,444評論 0 6

友情鏈接更多精彩內(nèi)容