2020-07-10

[知識(shí)分享]React Native 常用語(yǔ)法總結(jié)

  1. 自定義組件導(dǎo)出
    自定義組件在a.js文件中export xx。接受方需用import xx from a弄贿,如果在a.js中是export default xx待秃。那么在接受方就不需要也用xx接收嘹吨,隨便aa,bb祥诽,cc接收都行譬圣,import aa/bb/cc/xx from a.
    注意:在自定義的a.js文件中可多次export xx。但是只能有唯一的export default xx雄坪。來(lái)聲明導(dǎo)出厘熟。export default的時(shí)候變量名不能用{}包裹屯蹦,接收也不用。

  2. rest參數(shù)-擴(kuò)展運(yùn)算符(神奇三點(diǎn))
    例子:
    let foo = (x,y,…h(huán)d)=> {
    console.log(hd);
    return x+y
    }
    console.log(foo(3,4,5,6,7)) //…h(huán)d 表示聲明一個(gè)rest參數(shù)绳姨,用來(lái)接收多余的實(shí)參(形參情況下)
    打印結(jié)果:Array[5,6,7]. 是將多余的參數(shù)5登澜,6,7拼接數(shù)組打印出來(lái)
    例子:
    Function foo(x,y){
    return x+y;
    }
    在非形參情況下飘庄,三個(gè)點(diǎn)表示將數(shù)組拆分成獨(dú)立的值脑蠕。
    let arr = [3,4];
    console.log(foo(…arr)) 等同于 console.log(foo(3,4))
    let arr=[1,2,3];
    let hd=[4,5,6,…arr];
    相當(dāng)于let hd = [4,5,6,1,2,3]

  3. 數(shù)組遍歷的方法
    forEach:
    ary:[1,2,3,5]
    this.ary.forEach(x=>{
    console.log(x*x)
    })

    this.ary.map(x=>{
    console.log(x*x)
    })
    Map和foreach用法幾乎一樣跪削,但是如果對(duì)數(shù)組本身進(jìn)行操作的話谴仙,要用foreach,可以對(duì)數(shù)組自身操作碾盐。map對(duì)數(shù)組的元素操作完成后是返回一個(gè)新的數(shù)組晃跺。要用新的數(shù)組來(lái)接收,原數(shù)組不變毫玖。

  4. 數(shù)組的解構(gòu)賦值
    let [aa,bb,cc]=['111','222','333']
    console.log(aa+'A'+bb+'B'+cc) 結(jié)果:111A222B333
    解構(gòu)賦值是“模式匹配”掀虎,說(shuō)白了,只要是左右兩邊的解構(gòu)一樣付枫,就能一一對(duì)應(yīng)烹玉。
    例如:一個(gè)比較簡(jiǎn)潔的用法,交換兩個(gè)變量的值
    let x = 1;
    let y = 2;
    [x,y] = [y,x]
    console.log(x)
    console.log(y)
    其中x,y是同一個(gè)變量阐滩。
    注意:
    let [a,b]=[1]
    console.log(a) 1
    console.log(b). Undefined
    解構(gòu)失敗的話就是undefined

  5. 對(duì)象的解構(gòu)賦值
    let {ee,ff} = {ee:'12121',ff:'33333'}
    console.log(ee+ff) //1212133333
    let {ff,ee} = {ee:'12121',ff:'33333’}也一樣二打。

  6. 字符串解構(gòu)賦值 函數(shù)參數(shù)解構(gòu)賦值
    let [a,b,c] = ‘后盾人’;
    console.log(a) //后
    console.log(c)//人
    let {length:len} = ‘后盾人’叶眉;
    console.log(len); //3
    tt1([x,y]){
    return x*y
    }
    console.log(this.tt1([3,5])). //15
    在傳入?yún)?shù)那一刻址儒,參數(shù)變量被解構(gòu)成q和z。對(duì)于代碼內(nèi)部來(lái)說(shuō)衅疙,他們感受到的參數(shù)就是x和y
    [[1,2],[3,4]].map(([q,z]) => q+z) //[3,7]

  7. set數(shù)據(jù)結(jié)構(gòu) set本身是一個(gè)構(gòu)造函數(shù),用來(lái)生成set數(shù)據(jù)結(jié)構(gòu)鸳慈。(類似于數(shù)組饱溢,但是成員的值都是唯一的,沒(méi)有重復(fù)的值)
    //創(chuàng)建set數(shù)據(jù)解構(gòu)
    let sett = new Set();
    //向set數(shù)據(jù)結(jié)構(gòu)追加數(shù)據(jù)
    sett.add(1);
    sett.add(2);
    sett.add(1);
    console.log(sett) //set{1,2} 自動(dòng)過(guò)濾重復(fù)元素
    let s = new Set([1,2,3,4,5,6,7,2,3,1]);
    console.log(s);//Set(7) {1, 2, 3, 4, 5,6,7}
    //可以通過(guò)size屬性獲得set數(shù)據(jù)結(jié)構(gòu)的長(zhǎng)度
    console.log(sett.size)
    //數(shù)組去重
    let arr = [1,2,3,4,5,6,7,2,3,1,2,3]
    let db = [...new Set(arr)];
    console.log(db)
    //set數(shù)據(jù)結(jié)構(gòu)方法
    let ss = new Set([1,2,3,4,5,5,5,5])
    console.log(ss)
    //追加數(shù)據(jù)
    ss.add(7)
    console.log(ss)
    //刪除數(shù)據(jù)
    ss.delete(3);
    console.log(ss)
    //判斷數(shù)據(jù)中是否有某值
    let rs = ss.has(2);
    console.log(rs) //true
    //清除所有成員
    ss.clear()
    console.log(ss)
    let sa = new Set([1,2,3,4,5,6,6])
    //set數(shù)據(jù)轉(zhuǎn)數(shù)組(如果有重復(fù)元素去除)
    let ew = Array.from(sa); // 《==》 let ew = [...new Set(sa)];
    console.log(ew)
    //set結(jié)構(gòu)的實(shí)例有四個(gè)遍歷方法
    keys():返回鍵名的遍歷器
    values():返回鍵值的遍歷器
    entries():返回健值對(duì)的遍歷器
    forEach():使用回調(diào)函數(shù)遍歷每個(gè)成員
    console.log(sa.keys());//SetIterator {1, 2, 3, 4, 5, 6}
    console.log(sa.values());//SetIterator {1, 2, 3, 4, 5, 6}//這里沒(méi)有健名所以和健值一樣
    //用x去遍歷s.keys()產(chǎn)生的值
    for(x of sa.values()){
    console.log(x) // 1,2,3,4,5,6
    }
    for(x of sa.entries()){
    //sa.entries()將set數(shù)據(jù)的值組成健值對(duì)走芋,形成一個(gè)集合(因?yàn)檫@里沒(méi)有鍵名绩郎,所有鍵名和健值一樣)
    console.log(x) // [1,1] [2,2] [3,3] [4,4] [5,5] [6,6]
    }
    sa.forEach(x => {
    console.log(x);
    })

  8. map數(shù)據(jù)結(jié)構(gòu). 里面的‘對(duì)象’(類似于對(duì)象但不是),鍵名可以是任意類型的(傳統(tǒng)json的健值對(duì)只能是字符串)
    let m = new Map()
    m.set('name','后盾人')
    let ewq = m.get('name')
    console.log(ewq)//后盾人
    console.log(m)//Map(1) {"name" => "后盾人"}
    m.set(123,'abc')
    console.log(m.get(123))//abc
    let obj = {a:1}
    m.set(obj,111)
    console.log(m.get(obj))
    //作為構(gòu)造函數(shù)翁逞,Map也可以接收一個(gè)數(shù)組作為參數(shù)肋杖,該數(shù)組的成員是一個(gè)個(gè)表示健值對(duì)的數(shù)組
    let mmap = new Map([
    [123,'健值1'],
    [456,'健值2']
    ])
    console.log(mmap.get(123)) //健值1
    //注意:只有針對(duì)同一個(gè)對(duì)象的引用,Map結(jié)構(gòu)才將其視為同一個(gè)健挖函。
    mmap.set(['a'],123)
    console.log(mmap.get(['a']))//undefined 此處的['a']是兩個(gè)內(nèi)容相同的不同對(duì)象状植。
    let obb = ['a']
    mmap.set(obb,123)
    console.log(mmap.get(obb))//123
    //map數(shù)據(jù)結(jié)構(gòu)方法
    keys():返回鍵名的遍歷器
    values():返回鍵值的遍歷器
    entries():返回健值對(duì)的遍歷器
    forEach():使用回調(diào)函數(shù)遍歷每個(gè)成員
    for(let xx of mmap.keys()){
    console.log(xx) //123,456,['a'],['a']
    }
    for(let xx of mmap.values()){
    console.log(xx) //健值1,健值2,123津畸,123
    }
    for(let xx of mmap.entries()){
    console.log(xx) // [123, "健值1"],[456, "健值2"],[Array(1), 123],[Array(1), 123]
    }
    //v代表當(dāng)前遍歷到的健值對(duì)的健值
    //k代表當(dāng)前遍歷到的健值對(duì)的鍵名
    mmap.forEach((v,k) =>{
    console.log(v,k)//健值1 123 健值2 456 123 ["a"] 123 ["a"]
    })
    //map結(jié)構(gòu)轉(zhuǎn)化為數(shù)組(最簡(jiǎn)單的使用擴(kuò)展運(yùn)算符 ...神奇三點(diǎn))
    const map = new Map([
    [1,'one'],
    [2,'two'],
    [3,'three']
    ])
    let ree = [...map.keys()]
    console.log(ree) //[1, 2, 3]
    let reee = [...map.values()]
    console.log(reee) //["one", "two", "three"]
    let reeee = [...map.entries()] // [...map]
    console.log(reeee) //[Array(2), Array(2), Array(2)]
    let bxc = Array.from(map)//[Array(2), Array(2), Array(2)] 也可將map結(jié)構(gòu)轉(zhuǎn)化為數(shù)組
    for(x of map){
    console.log(x). //[1,'one'],[2,'two'], [3,'three']
    }
    //傳統(tǒng)的數(shù)組 字典遍歷用forin循環(huán)遍歷振定,x代表數(shù)組中的下標(biāo)鍵名。
    //對(duì)于set結(jié)構(gòu)和map結(jié)構(gòu)必須用of遍歷肉拓,x此時(shí)代表的是鍵值后频。


  9. calss animal{
    //構(gòu)造函數(shù),會(huì)在類被實(shí)例化的時(shí)候自動(dòng)執(zhí)行
    //一般來(lái)講暖途,需要定義的屬性卑惜,都聲明在constructor里面
    constructor(){
    this.weight = ‘重量’;
    this.color = ‘顏色’驻售;
    }
    //創(chuàng)建類的時(shí)候残揉,方法之間不需要逗號(hào)或分號(hào)
    //類里面的方法不需要用function聲明
    move(){
    console.log(‘會(huì)動(dòng)’)
    }
    //通過(guò)類創(chuàng)建對(duì)象
    let map = new animal();
    Class fish extends animal{
    constructor(){
    super();//如果繼承父類,需要添加屬性芋浮,必須先聲明super方法抱环。
    this.sao = ’21’;
    //super當(dāng)作對(duì)象使用的時(shí)候,指向的是父類的原型(prototype) 說(shuō)白了纸巷,super對(duì)象指向的就是父類镇草,可以通過(guò)super對(duì)象得到父類中的方法
    super.move();
    }}

  10. ReactNative中的platform選擇
    const platformText = Platform.select({
    ios:' 我是ios',
    android:'我是android'
    })
    <Text> {platformText} </Text>

  11. state和props
    state:我們使用兩種數(shù)據(jù)來(lái)控制一個(gè)組件,props和state瘤旨。props是在父組件中指定梯啤,而且一經(jīng)指定,在被指定的組件的生命周期中則不再改變存哲。對(duì)于需要改變的數(shù)據(jù)因宇,我們需要使用state。
    一般來(lái)說(shuō)祟偷,你需要在constructor中初始化state察滑,然后再需要修改時(shí)調(diào)用setState方法。

  12. Promise.
    //Promise修肠。簡(jiǎn)單說(shuō)就是一個(gè)容器贺辰,里面保存著某個(gè)未來(lái)才會(huì)結(jié)束的事件(通常是一個(gè)異步操作)的結(jié)果。
    var p = new Promise((resolve,reject)=>{
    setTimeout(() => {
    //resolve表示將promise對(duì)象的狀態(tài)變?yōu)槌晒η妒髸?huì)執(zhí)行后續(xù)的處理流程
    // reject()// 表示失敗
    resolve() //表示成功
    }, 2000);
    })
    .then((x)=>{//then方法會(huì)等promise對(duì)象狀態(tài)變?yōu)榻Y(jié)束后執(zhí)行
    // console.log(x)
    console.log('淘寶11')
    })
    Fetch本身也屬于promise的一種對(duì)象
    fetch('http:www.baidu.com',{
    methods:'POST',
    body:'sasasasas'
    }).then(x=>{
    })

  13. 除了系統(tǒng)的循環(huán)組件饲化,最基本的循環(huán)組件展示
    constructor(props){
    super(props)
    this.state = {
    ary:[1,2,3,4],
    }
    render(){
    let alltitle = []
    this.state.ary.map((x)=>{
    alltitle.push(<Text>標(biāo)題:{x}</Text>)
    })
    return(
    {alltitle}. //循環(huán)展示組件
    )}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吗伤,隨后出現(xiàn)的幾起案子吃靠,更是在濱河造成了極大的恐慌,老刑警劉巖足淆,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巢块,死亡現(xiàn)場(chǎng)離奇詭異礁阁,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)夕冲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)氮兵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人歹鱼,你說(shuō)我怎么就攤上這事泣栈。” “怎么了弥姻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵南片,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我庭敦,道長(zhǎng)疼进,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任秧廉,我火速辦了婚禮伞广,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疼电。我一直安慰自己嚼锄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布蔽豺。 她就那樣靜靜地躺著区丑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪修陡。 梳的紋絲不亂的頭發(fā)上沧侥,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音魄鸦,去河邊找鬼宴杀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛号杏,可吹牛的內(nèi)容都是我干的婴氮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼盾致,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了荣暮?” 一聲冷哼從身側(cè)響起庭惜,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎穗酥,沒(méi)想到半個(gè)月后护赊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體惠遏,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年骏啰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了节吮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡判耕,死狀恐怖透绩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布轨功,位于F島的核電站悔据,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏顽耳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烛亦。 院中可真熱鬧,春花似錦懂拾、人聲如沸煤禽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呜师。三九已至,卻和暖如春贾节,著一層夾襖步出監(jiān)牢的瞬間汁汗,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工栗涂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留知牌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓斤程,卻偏偏與公主長(zhǎng)得像角寸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子忿墅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349