React 易錯點

1. css的模塊化

    // 作用: 避免css的污染, 只作用于當前文件
    
    .box {width: 10}
    .box2: {composes: box; height: 30}
    
    // 引入的css文件, 必須xxx.module.css
    import style from './index.module.css'
    
    // 使用box2, 達到復合多類名
    <div style={style.box2}> </div>

2. setState合并

    componentDidMount() {
        // 會合并成一次
        this.setState({counter: this.state.counter + 1});
        this.setState({counter: this.state.counter + 1});
        this.setState({counter: this.state.counter + 1});
    }

3. 新的生命周期函數(shù)(16.3)

參考: https://juejin.im/post/5aca20c96fb9a028d700e1ce

  1. getDerivedStateFromProps

  2. getSnapshotBeforeUpdate

4. ref

    // 1. 回調(diào)的ref
    
    <div ref={ div => this.divRef = div }> text </div>
    
    this.divRef
    
    // 2. 新ref
    this.inputRef = React.createRef();
    
    <div ref={this.inputRef}> text </div>
    
    this.divRef.current
    
    // 3. hook的ref, 不單單存儲dom
    
    const inputEl = useRef(null);
    
    <input ref={inputEl} type="text" />
    
    inputEl.current

5. ref的轉(zhuǎn)發(fā)

  1. forwardRef: 給父組件暴露具體dom
  2. useImperativeHandle: 只暴露具體dom的具體屬性
  3. 參考: https://juejin.im/post/5d8f478751882509563a03b3
// 只給父組件暴露具體dom的部分屬性
function FancyInput(props, ref) {
  const inputRef = useRef()
  const [text, setText] = useState('')
  
  useImperativeHandle(ref, () => ({ //第一個參數(shù):暴露哪個ref;第二個參數(shù):暴露什么
    focus: () => {
      inputRef.current.focus()
    },
    value: text
  }))

  const handleChange= (e) => {
    setText(e.target.value);
  }
  return <input ref={inputRef} onChange={handleChange} value={text}/>
}
FancyInput = forwardRef(FancyInput)

// 給父組件暴露具體dom
const FancyInputFn = forwardRef((props, ref) => {
  return (
    <div>
        <div ref={ref}>tes</div>
    </div>
  )
})

// 父組件獲取子組件的ref
export default function App() {
  const inputRef = useRef(null)
  const inputRef2 = useRef(null)
  const handleClick = () => {
    console.log(inputRef.current, inputRef2.current);
  }
  return (
    <div>
      <FancyInput ref={inputRef}></FancyInput>
      <FancyInputFn ref={inputRef2}></FancyInputFn>
      <button onClick={handleClick}>點擊</button>
    </div>
  )
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笑跛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闽寡,更是在濱河造成了極大的恐慌露乏,老刑警劉巖傀蓉,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撩幽,死亡現(xiàn)場離奇詭異捐韩,居然都是意外死亡退唠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門奥帘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仪召,你說我怎么就攤上這事寨蹋。” “怎么了扔茅?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵已旧,是天一觀的道長。 經(jīng)常有香客問我召娜,道長运褪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任玖瘸,我火速辦了婚禮秸讹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雅倒。我一直安慰自己璃诀,他們只是感情好,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布蔑匣。 她就那樣靜靜地躺著劣欢,像睡著了一般棕诵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凿将,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天校套,我揣著相機與錄音,去河邊找鬼牧抵。 笑死笛匙,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的灭忠。 我是一名探鬼主播膳算,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弛作!你這毒婦竟也來了涕蜂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤映琳,失蹤者是張志新(化名)和其女友劉穎机隙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萨西,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡有鹿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谎脯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葱跋。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖源梭,靈堂內(nèi)的尸體忽然破棺而出娱俺,到底是詐尸還是另有隱情,我是刑警寧澤废麻,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布荠卷,位于F島的核電站,受9級特大地震影響烛愧,放射性物質(zhì)發(fā)生泄漏油宜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一怜姿、第九天 我趴在偏房一處隱蔽的房頂上張望慎冤。 院中可真熱鬧,春花似錦沧卢、人聲如沸粪薛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽违寿。三九已至湃交,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間藤巢,已是汗流浹背搞莺。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掂咒,地道東北人才沧。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像绍刮,于是被迫代替她去往敵國和親温圆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1孩革、常用書寫 1.1 自定義組件名時首字母要大寫岁歉,否則會報錯。1.2 render()函數(shù)里面的return關鍵字...
    四月天__閱讀 277評論 0 0
  • 交朋友就要交那種即使變成老頭了也能互叫綽號的! 《初識RxJS》 背景 RP(Reactive Programmi...
    知行社閱讀 683評論 0 2
  • 頭發(fā)天然卷的家伙都不是壞人膝蜈! 《如何閱讀計算機科學類的書》 概要 閱讀計算機書的建議: 鑒別爛書锅移。 檢視閱讀”ゲ快速...
    知行社閱讀 670評論 0 3
  • 當一個軟件工程師宣稱他已經(jīng)完成了 90% 的工作非剃,意思是他還需要相同的時間來完成剩下的 10% 的工作。 《用程序...
    知行社閱讀 782評論 0 4
  • 40推沸、React 什么是React备绽?React 是一個用于構(gòu)建用戶界面的框架(采用的是MVC模式):集中處理VIE...
    萌妹撒閱讀 1,016評論 0 1