學(xué)習(xí)日志1

2020.09.21婆咸, 1. 復(fù)習(xí)了contextAPI(Provider/Consumer);
2. 高階組件(傳入一個(gè)組件块差,返回一個(gè)新組件, 比如logger組件)憨闰,特別要注意的是靜態(tài)方法需五,可以通過繼承來保留之前的靜態(tài)方法, ref也比較特殊宏邮,可以通過逼得props來傳遞,比如重命名為myRef蜜氨,然后在源組件中通過props.myRef來獲取(ref是一個(gè)特殊的屬性埋哟,類似的有key,它們不在props中)

  1. react-router-dom, react的路由庫赤赊,基本上是這樣的結(jié)構(gòu):
import { HashRouter, Route, Link } from 'react-router-dom';
ReactDOM.render(
  <HashRouter>    /*路由的包裹容器*/
    <>
      <ul>
        <li>
          <Link to="/"></Link>
        </li>
        <li>
          <Link to="/user"></Link>
        </li>
        <li>
          <Link to="/profile"></Link>
        </li>
      </ul>
      <Route path="/" component={Home} />
      <Route path="/user" component={User} />
      <Route path="/profile" component={Profile} />
    </>
  </HashRouter>,
  document.getElementById('root')
);
  1. path-to-regexp,這個(gè)包是用來匹配路由的煞赢,普通用法就只是匹配路由是否相等,稍微高階的照筑,就是取路徑參數(shù)(子組件中录豺,this.props.match.params.xxx
  2. 路由權(quán)限饭弓, 組件Protected用來表示權(quán)限路由,(原理大約是: 當(dāng)路由渲染時(shí)弟断,路徑匹配到之后,先找組件的component屬性阀趴,能找到的話,就用component渲染棚菊,找不到的話叔汁,就找它的render屬性)
//Protected.js
import React from 'react';

export default (props) => {
  let { path, component: RouteComponent } = props;
  return (
    <Route
      path={path}
      render={(props) =>
        localStorage.getItem('logined') ? (
          <RouteComponent {...props} />
        ) : (
          <Redirect
            to={{
              pathname: '/login',
              state: { from: props.location.pathname },
            }}
          />
        )
      }
    />
  );
};
  1. 渲染一個(gè)Route有三種方式
 //優(yōu)先級 1>2>3
1. component  組件
2. render  函數(shù) (路徑匹配才渲染)
3. children  函數(shù)  (不管路徑匹不匹配都渲染),應(yīng)用于MenuLink据块,如果路徑匹配的話,會有match另假,否則沒有match屬性

接下來,介紹children

import React from 'react';
import { Route, Link } from 'react-router-dom';
export default (props) => {
  let { to, exact, children } = props;
  return (
    <Route
      path={typeof to == 'object' ? to.pathname : to}
      exact={exact}
      children={(childProps) => ( //匹配到后己莺,給link加active類來得到高亮效果
        <Link to={to} className={childProps.match ? 'active' : ''}>{children}</Link>; 
      )}
    ></Route>
  );
};
  1. withRouter
    withRouter可以講一個(gè)不在router系統(tǒng)中的組件戈轿,納入到router系統(tǒng)中。
    實(shí)現(xiàn)原理如下:
import React from "react";
import {Route} from "./";
export default function(OldComponent) {
  return () => <Route component={OldComponent}/>
}
//使用時(shí)
import React from "react";
import {withRouter} from "react-router-dom";
class Demo extends React.Component {  //demo組件是脫離router系統(tǒng)的凶杖,因此款筑,它本來是不能使用history的
  render (
    return (
      <div onClick={this.props.history.push('/')}>logo</div>
    )
  )
}

export default withRouter(Demo);
  1. browserRouter
    browserRouter是瀏覽器路由,HashRouter是hash路由杈湾,HashRouter監(jiān)聽hashchange事件, browserRouter監(jiān)聽的是瀏覽器的popStatepushState漆撞。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市浮驳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌离咐,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宵蛀,死亡現(xiàn)場離奇詭異县貌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)煤痕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祟敛,“玉大人兆解,你說我怎么就攤上這事馆铁」Γ” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵辣垒,是天一觀的道長。 經(jīng)常有香客問我勋桶,道長侥猬,這世上最難降的妖魔是什么例驹? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任鹃锈,我火速辦了婚禮,結(jié)果婚禮上屎债,老公的妹妹穿的比我還像新娘仅政。我一直安慰自己盆驹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布运褪。 她就那樣靜靜地躺著玖瘸,像睡著了一般秸讹。 火紅的嫁衣襯著肌膚如雪雅倒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天劣欢,我揣著相機(jī)與錄音,去河邊找鬼凿将。 笑死价脾,一個(gè)胖子當(dāng)著我的面吹牛牧抵,可吹牛的內(nèi)容都是我干的侨把。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼获枝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了省店?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤懦傍,失蹤者是張志新(化名)和其女友劉穎旭旭,沒想到半個(gè)月后葱跋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體源梭,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稍味,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了模庐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怜姿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沧卢,到底是詐尸還是另有隱情醉者,我是刑警寧澤但狭,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布撬即,位于F島的核電站,受9級特大地震影響剥槐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜迈喉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一温圆、第九天 我趴在偏房一處隱蔽的房頂上張望挨摸。 院中可真熱鬧岁歉,春花似錦、人聲如沸锅移。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至券坞,卻和暖如春鬓催,著一層夾襖步出監(jiān)牢的瞬間恨锚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工课舍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筝尾。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓办桨,卻偏偏與公主長得像忿等,于是被迫代替她去往敵國和親崔挖。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

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