日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - react 的問題,標題不知怎么起...

瀏覽:267日期:2023-06-02 10:23:07

問題描述

我具體描述下問題產(chǎn)生的原因吧。現(xiàn)在有三個組件(暫定a、b、c)去實現(xiàn)一個用戶認證的功能。a組件是父組件(相對b、c,a組件外面還有父組件),負責接收父組件傳遞下來用戶的認證信息,b組件是用戶用來填寫信息的地方,c組件是表示用戶的認證狀態(tài)(未認證、審核、已認證、認證失敗,分別對應(yīng)狀態(tài)為0,1,2,-1)。假如用戶認證失敗了,c組件內(nèi)部會有一個按鈕,讓用戶重新認證(切換b、c組件)。

我一開始寫的時候是這么想的:提取一個狀態(tài)到a組件中(暫定show),show的值是根據(jù)a組件傳遞下來的認證狀態(tài)(props)來確定的,通過show來改變應(yīng)該展示哪個組件。當用戶認證失敗的時候點擊c組件中的“重新認證”,通過回調(diào)函數(shù)改變父組件show的狀態(tài),完成b、c組件的切換。問題就出現(xiàn)在這個show上(暫定true顯示b組件,false顯示c組件),show的默認值為true(讓用戶輸入信息)。我在a組件的componentWillReceiveProps里面去改變show的狀態(tài)(didMount拿不到props,render里面不能操作state)。現(xiàn)在不論用戶是否通過認證了,a組件加載的時候默認展示的都是b組件,因為componentWillReceiveProps沒有被調(diào)用。刷新頁面之后才會展示c組件。現(xiàn)在我能想到的解決辦法就是讓a組件去拿數(shù)據(jù),然后確定show的狀態(tài)。我想問下各位大神,還有更好的辦法幫我實現(xiàn)這個功能嗎?

補一張圖吧,看的清楚點javascript - react 的問題,標題不知怎么起...

問題解答

回答1:

a:

//構(gòu)造器內(nèi)this.state = { show:true}//class內(nèi)changeState(){ this.setState({show:false})}//render內(nèi)const c_props = {changeState}<C {...c_props}/>

c:

onclick(){ this.props.changeState();}回答2:

應(yīng)該有一個組件去決定是否要進行用戶認證,如果你想讓登錄組件全部包攬這個邏輯,那你需要一個加載狀態(tài),剛開始的時候處于加載中,什么都不顯示。所謂加載就是決定是否要認證(發(fā)API請求等等),加載完畢后就可以決定是否要認證。

didMount拿不到props

我100%保證 componentDidMount() 是可以拿到props參數(shù)的,通過 this.props 獲取,但是componentDidMount() 只在組件創(chuàng)建時調(diào)用一次,通常情況下如果要加載數(shù)據(jù)就在 componentDidMount() 里執(zhí)行。

回答3:

show為什么要是a組件的state?你把show當作render函數(shù)中的一個局部變量就行了。

假定a組件從props里傳遞過來的認證狀態(tài)變量命名為 auth,你的 a 組件render方法可以這樣寫:

class A extends Component { render () { let show = this.props.auth === 2; // 0 1 2 -1 return ( <p> {show && <p>component B</p>} {!show && <p>component C</p>} </p> ); }}

========= 更新 =========

第一次沒看到你的C組件居然還有一個回調(diào)箭頭來改變A組件的show!

對,這一步也是錯誤的設(shè)計。

A組件得到的認證信息是A組件的父組件傳遞下來的,那么這個show就應(yīng)該要唯一依賴于這一個信息的,C組件具有改變這個認證信息的功能,那么,A組件有義務(wù)把這個改變通知給A組件的父組件,而不是私自地悄么聲地改變自己組件的state,即你在這里設(shè)定的show這個state,就草草了事。試想,這個時候,A組件得到的props是認證失敗,渲染了C組件,C組件有重新認證的功能,用戶重新認證成功,C組件又通知A組件認證成功了,這個時候A組件要相信誰?props和state就不同步了!更慘的是A組件的父組件,他還傻乎乎地以為自己拿到的是正確的信息,還通過props告訴A組件,用戶認證失敗啦,殊不知A組件已經(jīng)串通他底下的小弟,把認證信息都給改了!倘若這個時候A組件有個兄弟叫A2組件,A2也通過props從他們共同的父組件接收認證信息,那就會出現(xiàn)A和底下一幫家伙悄悄重新認證了,而A的父親和兄弟還蒙在鼓里,頁面顯示就不一致啦!

正確的設(shè)計是,A組件在接收到C組件重新認證成功的事件通知,需要把這個通知繼續(xù)往上傳遞,告訴A組件的父組件,父組件接收到這個事件,改變他自己的狀態(tài),進而改變傳遞給A組件的props,A組件props改變,導致A組件重繪,從而replace C with B。

認證信息只能保存一份,你的例子里,認證信息放在A組件的父組件里,因此,要修改這個認證信息,也應(yīng)該在A組件的父組件里完成。因此,這個show其實只是一個根據(jù)props產(chǎn)生的中間變量,根本無需設(shè)計成A的state。

如果你用redux就沒有這個疑惑了。

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久国产尿小便嘘嘘| 亚洲最新av| 国产精品国码视频| 国产精品一区毛片| 国产精品观看| 高清精品久久| 91精品一区国产高清在线gif| 亚洲精品国产嫩草在线观看| 国产自产自拍视频在线观看| 人在线成免费视频| 麻豆精品蜜桃| 午夜精品亚洲| 婷婷精品在线| 精品一区二区三区视频在线播放| 国产精品蜜芽在线观看| 在线日韩视频| 亚洲三级视频| 久久精品毛片| 欧洲激情综合| 青青国产91久久久久久| 久久亚州av| 香蕉成人av| 久久亚洲电影| 国产精品一在线观看| 国产一区二区三区黄网站| 国产一区久久| 国产毛片一区二区三区| 丝袜美腿一区| 亚洲精品影视| 国产不卡精品| 日韩一区精品字幕| 国产精品久久久一区二区| 天堂√中文最新版在线| 老司机久久99久久精品播放免费| 久久av导航| 亚洲美洲欧洲综合国产一区| 青草久久视频| 亚洲第一区色| 日韩黄色av| av在线最新| 免费在线观看日韩欧美| 麻豆精品在线视频| 国产农村妇女精品一二区| 免费在线日韩av| 亚洲色诱最新| 国产福利91精品一区二区| 视频一区在线播放| 国产精品精品| 日韩激情一二三区| 久久蜜桃精品| 嫩草伊人久久精品少妇av杨幂 | 国产美女亚洲精品7777| 99久久激情| 免费看一区二区三区| 久久午夜影视| 久久激情婷婷| 久久99精品久久久野外观看| 性欧美69xoxoxoxo| 日本激情一区| 国产欧美日韩精品高清二区综合区| 婷婷色综合网| 蜜桃av在线播放| 国产精品多人| 日本亚洲不卡| 性一交一乱一区二区洋洋av| 日本免费一区二区三区四区| 欧美在线观看天堂一区二区三区| 尤物精品在线| 日韩免费福利视频| 欧美私人啪啪vps| 夜久久久久久| 一区二区小说| 欧美不卡高清一区二区三区| 国产精品99精品一区二区三区∴ | 久久久精品区| 亚洲日产国产精品| 欧美日韩激情在线一区二区三区| 成人在线免费观看91| 国产乱论精品| 欧美午夜三级| 婷婷精品在线观看| 丝袜诱惑制服诱惑色一区在线观看 | 成人在线免费观看网站| 亚洲日本国产| 免费精品视频| 亚洲一区国产| 99热精品在线观看| 99综合视频| 午夜宅男久久久| 久久高清国产| 蜜桃视频第一区免费观看| 亚洲神马久久| 久久亚洲欧美| 蜜桃视频免费观看一区| 亚洲开心激情| 日欧美一区二区| 日韩欧美中文字幕一区二区三区| 亚洲ab电影| 婷婷成人av| 亚洲+小说+欧美+激情+另类| 午夜电影一区| 国产精品一区二区精品| 精品三级久久久| 国产高清不卡| 欧美午夜不卡| 一区二区精品| 国产精品亚洲产品| 国产一区二区三区四区五区传媒| 日韩1区2区| 久久中文字幕av一区二区不卡| 久久中文字幕二区| 亚洲欧美日韩高清在线| 国产视频一区三区| 人人爽香蕉精品| 日本国产一区| 精品日本视频| 日韩精品免费一区二区在线观看| 国产综合婷婷| 蜜桃视频在线观看一区二区| 青草国产精品久久久久久| 国产精品nxnn| 精品国产aⅴ| 蜜桃国内精品久久久久软件9| 免费人成在线不卡| 日韩精品五月天| 欧美aa在线视频| 日韩国产综合| 9色精品在线| 亚洲丝袜美腿一区| 国产精品久久久亚洲一区| 日韩欧美另类一区二区| 亚洲激情欧美| 欧美伊人影院| av中文字幕在线观看第一页| 亚洲黄页一区| 国产欧美日韩一区二区三区四区| 国产精品xxxav免费视频| 中文在线а√在线8| 亚洲电影有码| 亚洲一二av| 成人在线视频免费| 国产韩日影视精品| 日韩高清在线不卡| 国产精品九九| 久久国产影院| 亚洲视频国产精品| 久久精品国产999大香线蕉| 五月天av在线| 免费精品视频| 久久久国产精品网站| 亚洲夜间福利| 欧美一区91| 欧美va天堂| 国产丝袜一区| 欧美日韩在线播放视频| 日本欧美韩国一区三区| 国产欧洲在线| 蜜桃久久久久久| 麻豆极品一区二区三区| 影视先锋久久| 日韩av二区在线播放| 理论片午夜视频在线观看| 亚洲一区日韩| 麻豆精品久久久| 亚洲深夜福利在线观看| 国产一区二区久久久久| 亚洲五月综合| 免费污视频在线一区| 日韩av资源网| 99国产成+人+综合+亚洲欧美| 精品久久亚洲| 中文字幕视频精品一区二区三区| 国产精品成久久久久| 91成人精品| 精品免费视频| 午夜电影一区| 日韩天堂av| 新版的欧美在线视频| 国产区精品区| 蜜桃久久久久久| 激情自拍一区| 蜜桃av.网站在线观看| 国产一卡不卡| 视频一区视频二区在线观看| 在线中文字幕播放| 国产精品大片免费观看| 免费成人av在线播放| 亚洲特级毛片| 麻豆精品少妇| 天堂久久一区| 久久亚洲二区| 伊人久久婷婷| 欧美午夜不卡| 99精品国产一区二区三区| 精品国产乱码久久久久久樱花| 日韩精品中文字幕吗一区二区| 黄色日韩精品| 九一精品国产| 婷婷色综合网| 欧美色图一区|