React Router DOM

2023-10-26

大家可以在https://reacttraining.com/react-router/web/api/StaticRouter/basename-string 看相关例子

<BrowserRouter>

<BrowserRouter> 使用 HTML5 提供的 history API (pushState, replaceStatepopstate 事件) 来保持 UI 和 URL 的同步。

 

import { BrowserRouter } from 'react-router-dom';

<BrowserRouter
  basename={string}
  forceRefresh={bool}
  getUserConfirmation={func}
  keyLength={number}
>
  <App />
</BrowserRouter>

basename: string

所有位置的基准 URL。如果你的应用程序部署在服务器的子目录,则需要将其设置为子目录。basename 的正确格式是前面有一个前导斜杠,但不能有尾部斜杠。

 

<BrowserRouter basename="/calendar">
  <Link to="/today" />
</BrowserRouter>

上例中的 <Link> 最终将被呈现为:

 

<a href="/calendar/today" />

forceRefresh: bool

如果为 true ,在导航的过程中整个页面将会刷新。一般情况下,只有在不支持 HTML5 history API 的浏览器中使用此功能。

 

const supportsHistory = 'pushState' in window.history;

<BrowserRouter forceRefresh={!supportsHistory} />

getUserConfirmation: func

用于确认导航的函数,默认使用 window.confirm。例如,当从 /a 导航至 /b 时,会使用默认的 confirm 函数弹出一个提示,用户点击确定后才进行导航,否则不做任何处理。译注:需要配合 <Prompt> 一起使用。

 

// 这是默认的确认函数
const getConfirmation = (message, callback) => {
  const allowTransition = window.confirm(message);
  callback(allowTransition);
}

<BrowserRouter getUserConfirmation={getConfirmation} />

keyLength: number

location.key 的长度,默认为 6

 

<BrowserRouter keyLength={12} />

children: node

要呈现的单个子元素(组件)

<HashRouter>

<HashRouter> 使用 URL 的 hash 部分(即 window.location.hash)来保持 UI 和 URL 的同步。

 

import { HashRouter } from 'react-router-dom';

<HashRouter>
  <App />
</HashRouter>

注意: 使用 hash 记录导航历史不支持 location.keylocation.state。在以前的版本中,我们视图 shim 这种行为,但是仍有一些问题我们无法解决。任何依赖此行为的代码或插件都将无法正常使用。由于该技术仅用于支持旧式(低版本)浏览器,因此对于一些新式浏览器,我们鼓励你使用 <BrowserHistory> 代替。

basename: string

所有位置的基准 URL。basename 的正确格式是前面有一个前导斜杠,但不能有尾部斜杠。

 

<HashRouter basename="/calendar">
  <Link to="/today" />
</HashRouter>

上例中的 <Link> 最终将被呈现为:

 

<a href="#/calendar/today" />

getUserConfirmation: func

用于确认导航的函数,默认使用 window.confirm

 

// 这是默认的确认函数
const getConfirmation = (message, callback) => {
  const allowTransition = window.confirm(message);
  callback(allowTransition);
}

<HashRouter getUserConfirmation={getConfirmation} />

hashType: string

window.location.hash 使用的 hash 类型,有如下几种:

  • slash - 后面跟一个斜杠,例如 #/ 和 #/sunshine/lollipops
  • noslash - 后面没有斜杠,例如 # 和 #sunshine/lollipops
  • hashbang - Google 风格的 ajax crawlable,例如 #!/ 和 #!/sunshine/lollipops

默认为 slash

children: node

要呈现的单个子元素(组件)

<Link>

为你的应用提供声明式的、可访问的导航链接。

 

import { Link } from 'react-router-dom';

<Link to="/about">About</Link>

to: string

一个字符串形式的链接地址,通过 pathnamesearchhash 属性创建。

 

<Link to='/courses?sort=name' />

to: object

一个对象形式的链接地址,可以具有以下任何属性:

  • pathname - 要链接到的路径
  • search - 查询参数
  • hash - URL 中的 hash,例如 #the-hash
  • state - 存储到 location 中的额外状态数据

 

<Link to={{
  pathname: '/courses',
  search: '?sort=name',
  hash: '#the-hash',
  state: {
    fromDashboard: true
  }
}} />

replace: bool

当设置为 true 时,点击链接后将替换历史堆栈中的当前条目,而不是添加新条目。默认为 false

 

<Link to="/courses" replace />

innerRef: func

允许访问组件的底层引用。

 

const refCallback = node => {
  // node 指向最终挂载的 DOM 元素,在卸载时为 null
}

<Link to="/" innerRef={refCallback} />

others

你还可以传递一些其它属性,例如 titleidclassName 等。

 

<Link to="/" className="nav" title="a title">About</Link>

<NavLink>

一个特殊版本的 <Link>,它会在与当前 URL 匹配时为其呈现元素添加样式属性。

 

import { NavLink } from 'react-router-dom';

<NavLink to="/about">About</NavLink>

activeClassName: string

当元素处于激活状态时应用的类,默认为 active。它将与 className 属性一起使用。

 

<NavLink to="/faq" activeClassName="selected">FAQs</NavLink>

activeStyle: object

当元素处于激活状态时应用的样式。

 

const activeStyle = {
  fontWeight: 'bold',
  color: 'red'
};

<NavLink to="/faq" activeStyle={activeStyle}>FAQs</NavLink>

exact: bool

如果为 true,则只有在位置完全匹配时才应用激活类/样式。

 

<NavLink exact to="/profile">Profile</NavLink>

strict: bool

如果为 true,则在确定位置是否与当前 URL 匹配时,将考虑位置的路径名后面的斜杠。有关更多信息,请参阅 <Route strict> 文档。

 

<NavLink strict to="/events/">Events</NavLink>

isActive: func

添加额外逻辑以确定链接是否处于激活状态的函数。如果你要做的不仅仅是验证链接的路径名与当前 URL 的路径名相匹配,那么应该使用它。

 

// 只有当事件 id 为奇数时才考虑激活
const oddEvent = (match, location) => {
  if (!match) {
    return false;
  }
  const eventID = parseInt(match.params.eventID);
  return !isNaN(eventID) && eventID % 2 === 1;
}

<NavLink to="/events/123" isActive={oddEvent}>Event 123</NavLink>

location: object

isActive 默认比较当前历史位置(通常是当前的浏览器 URL)。你也可以传递一个不同的位置进行比较。

<Prompt>

用于在位置跳转之前给予用户一些确认信息。当你的应用程序进入一个应该阻止用户导航的状态时(比如表单只填写了一半),弹出一个提示。

 

import { Prompt } from 'react-router-dom';

<Prompt
  when={formIsHalfFilledOut}
  message="你确定要离开当前页面吗?"
/>

message: string

当用户试图离开某个位置时弹出的提示信息。

 

<Prompt message="你确定要离开当前页面吗?" />

message: func

将在用户试图导航到下一个位置时调用。需要返回一个字符串以向用户显示提示,或者返回 true 以允许直接跳转。

 

<Prompt message={location => {
  const isApp = location.pathname.startsWith('/app');

  return isApp ? `你确定要跳转到${location.pathname}吗?` : true;
}} />

译注:上例中的 location 对象指的是下一个位置(即用户想要跳转到的位置)。你可以基于它包含的一些信息,判断是否阻止导航,或者允许直接跳转。

when: bool

在应用程序中,你可以始终渲染 <Prompt> 组件,并通过设置 when={true}when={false} 以阻止或允许相应的导航,而不是根据某些条件来决定是否渲染 <Prompt> 组件。

译注:when 只有两种情况,当它的值为 true 时,会弹出提示信息。如果为 false 则不会弹出。见阻止导航示例。

 

<Prompt when={true} message="你确定要离开当前页面吗?" />

<MemoryRouter>

将 URL 的历史记录保存在内存中的 <Router>(不读取或写入地址栏)。在测试和非浏览器环境中很有用,例如 React Native

 

import { MemoryRouter } from 'react-router-dom';

<MemoryRouter>
  <App />
</MemoryRouter>

initialEntries: array

历史堆栈中的一系列位置信息。这些可能是带有 {pathname, search, hash, state} 的完整位置对象或简单的字符串 URL。

 

<MemoryRouter
  initialEntries={[ '/one', '/two', { pathname: '/three' } ]}
  initialIndex={1}
>
  <App/>
</MemoryRouter>

initialIndex: number

initialEntries 数组中的初始位置索引。

getUserConfirmation: func

用于确认导航的函数。当 <MemoryRouter> 直接与 <Prompt> 一起使用时,你必须使用此选项。

keyLength: number

location.key 的长度,默认为 6

children: node

要呈现的单个子元素(组件)

<Redirect>

使用 <Redirect> 会导航到一个新的位置。新的位置将覆盖历史堆栈中的当前条目,例如服务器端重定向(HTTP 3xx)。

 

import { Route, Redirect } from 'react-router-dom';

<Route exact path="/" render={() => (
  loggedIn ? (
    <Redirect to="/dashboard" />
  ) : (
    <PublicHomePage />
  )
)} />

to: string

要重定向到的 URL,可以是 path-to-regexp 能够理解的任何有效的 URL 路径。所有要使用的 URL 参数必须由 from 提供。

 

<Redirect to="/somewhere/else" />

to: object

要重定向到的位置,其中 pathname 可以是 path-to-regexp 能够理解的任何有效的 URL 路径。

 

<Redirect to={{
  pathname: '/login',
  search: '?utm=your+face',
  state: {
    referrer: currentLocation
  }
}} />

上例中的 state 对象可以在重定向到的组件中通过 this.props.location.state 进行访问。而 referrer 键(不是特殊名称)将通过路径名 /login 指向的登录组件中的 this.props.location.state.referrer 进行访问。

push: bool

如果为 true,重定向会将新的位置推入历史记录,而不是替换当前条目。

 

<Redirect push to="/somewhere/else" />

from: string

要从中进行重定向的路径名,可以是 path-to-regexp 能够理解的任何有效的 URL 路径。所有匹配的 URL 参数都会提供给 to,必须包含在 to 中用到的所有参数,to 未使用的其它参数将被忽略。

只能在 <Switch> 组件内使用 <Redirect from>,以匹配一个位置。有关更多细节,请参阅 <Switch children>

 

<Switch>
  <Redirect from='/old-path' to='/new-path' />
  <Route path='/new-path' component={Place} />
</Switch>

 

// 根据匹配参数进行重定向
<Switch>
  <Redirect from='/users/:id' to='/users/profile/:id' />
  <Route path='/users/profile/:id' component={Profile} />
</Switch>

exact: bool

完全匹配,相当于 Route.exact

strict: bool

严格匹配,相当于 Route.strict

<Route>

<Route> 可能是 React Router 中最重要的组件,它可以帮助你理解和学习如何更好的使用 React Router。它最基本的职责是在其 path 属性与某个 location 匹配时呈现一些 UI。

请考虑以下代码:

 

import { BrowserRouter as Router, Route } from 'react-router-dom';

<Router>
  <div>
    <Route exact path="/" component={Home} />
    <Route path="/news" component={News} />
  </div>
</Router>

如果应用程序的位置是 /,那么 UI 的层次结构将会是:

 

<div>
  <Home />
  <!-- react-empty: 2 -->
</div>

或者,如果应用程序的位置是 /news,那么 UI 的层次结构将会是:

 

<div>
  <!-- react-empty: 1 -->
  <News />
</div>

其中 react-empty 注释只是 React 空渲染的实现细节。但对于我们的目的而言,它是有启发性的。路由始终在技术上被“渲染”,即使它的渲染为空。只要应用程序的位置匹配 <Route>path,你的组件就会被渲染。

Route render methods

使用 <Route> 渲染一些内容有以下三种方式:

在不同的情况下使用不同的方式。在指定的 <Route> 中,你应该只使用其中的一种。请参阅下面的解释,了解为什么有三个选项。大多数情况下你会使用 component

Route props

三种渲染方式都将提供相同的三个路由属性:

component

指定只有当位置匹配时才会渲染的 React 组件,该组件会接收 route props 作为属性。

 

const User = ({ match }) => {
  return <h1>Hello {match.params.username}!</h1>
}

<Route path="/user/:username" component={User} />

当你使用 component(而不是 renderchildren)时,Router 将根据指定的组件,使用 React.createElement 创建一个新的 React 元素。这意味着,如果你向 component 提供一个内联函数,那么每次渲染都会创建一个新组件。这将导致现有组件的卸载和新组件的安装,而不是仅仅更新现有组件。当使用内联函数进行内联渲染时,请使用 renderchildren(见下文)。

render: func

使用 render 可以方便地进行内联渲染和包装,而无需进行上文解释的不必要的组件重装。

你可以传入一个函数,以在位置匹配时调用,而不是使用 component 创建一个新的 React 元素。render 渲染方式接收所有与 component 方式相同的 route props

 

// 方便的内联渲染
<Route path="/home" render={() => <div>Home</div>} />

// 包装
const FadingRoute = ({ component: Component, ...rest }) => (
  <Route {...rest} render={props => (
    <FadeIn>
      <Component {...props} />
    </FadeIn>
  )} />
)

<FadingRoute path="/cool" component={Something} />

警告:<Route component> 优先于 <Route render>,因此不要在同一个 <Route> 中同时使用两者。

children: func

有时候不论 path 是否匹配位置,你都想渲染一些内容。在这种情况下,你可以使用 children 属性。除了不论是否匹配它都会被调用以外,它的工作原理与 render 完全一样。

children 渲染方式接收所有与 componentrender 方式相同的 route props,除非路由与 URL 不匹配,不匹配时 matchnull。这允许你可以根据路由是否匹配动态地调整用户界面。如下所示,如果路由匹配,我们将添加一个激活类:

 

const ListItemLink = ({ to, ...rest }) => (
  <Route path={to} children={({ match }) => (
    <li className={match ? 'active' : ''}>
      <Link to={to} {...rest} />
    </li>
  )} />
)

<ul>
  <ListItemLink to="/somewhere" />
  <ListItemLink to="/somewhere-else" />
</ul>

这对动画也很有用:

 

<Route children={({ match, ...rest }) => (
  {/* Animate 将始终渲染,因此你可以利用生命周期来为其子元素添加进出动画 */}
  <Animate>
    {match && <Something {...rest} />}
  </Animate>
)} />

警告:<Route component><Route render> 优先于 <Route children>,因此不要在同一个 <Route> 中同时使用多个。

path: string

可以是 path-to-regexp 能够理解的任何有效的 URL 路径。

 

<Route path="/users/:id" component={User} />

没有定义 path<Route> 总是会被匹配。

exact: bool

如果为 true,则只有在 path 完全匹配 location.pathname 时才匹配。

 

<Route exact path="/one" component={OneComponent} />

[图片上传失败...(image-d86957-1526486128879)]

strict: bool

如果为 true,则具有尾部斜杠的 path 仅与具有尾部斜杠的 location.pathname 匹配。当 location.pathname 中有附加的 URL 片段时,strict 就没有效果了。

 

<Route strict path="/one/" component={OneComponent} />

[图片上传失败...(image-4289b9-1526486128879)]

警告:可以使用 strict 来强制规定 location.pathname 不能具有尾部斜杠,但是为了做到这一点,strictexact 必须都是 true

[图片上传失败...(image-e932c7-1526486128879)]

location: object

一般情况下,<Route> 尝试将其 path 与当前历史位置(通常是当前的浏览器 URL)进行匹配。但是,也可以传递具有不同路径名的位置进行匹配。

当你需要将 <Route> 与当前历史位置以外的 location 进行匹配时,此功能非常有用。如过渡动画示例中所示。

如果一个 <Route> 被包含在一个 <Switch> 中,并且需要匹配的位置(或当前历史位置)传递给了 <Switch>,那么传递给 <Route>location 将被 <Switch> 所使用的 location 覆盖。

sensitive: bool

如果为 true,进行匹配时将区分大小写。

 

<Route sensitive path="/one" component={OneComponent} />

[图片上传失败...(image-2be4d5-1526486128879)]

<Router>

所有 Router 组件的通用低阶接口。通常情况下,应用程序只会使用其中一个高阶 Router:

使用低阶 <Router> 的最常见用例是同步一个自定义历史记录与一个状态管理库,比如 Redux 或 Mobx。请注意,将 React Router 和状态管理库一起使用并不是必需的,它仅用于深度集成。

 

import { Router } from 'react-router-dom';
import createBrowserHistory from 'history/createBrowserHistory';

const history = createBrowserHistory();

<Router history={history}>
  <App />
</Router>

history: object

用于导航的历史记录对象。

 

import createBrowserHistory from 'history/createBrowserHistory';

const customHistory = createBrowserHistory();

<Router history={customHistory} />

children: node

要呈现的单个子元素(组件)

 

<Router>
  <App />
</Router>

<StaticRouter>

一个永远不会改变位置的 <Router>

这在服务器端渲染场景中非常有用,因为用户实际上没有点击,所以位置实际上并未发生变化。因此,名称是 static(静态的)。当你只需要插入一个位置,并在渲染输出上作出断言以便进行简单测试时,它也很有用。

以下是一个示例,node server 为 <Redirect> 发送 302 状态码,并为其它请求发送常规 HTML:

 

import { createServer } from 'http';
import React from 'react';
import ReactDOMServer from 'react-dom/server';
import { StaticRouter } from 'react-router';

createServer((req, res) => {
  // 这个 context 对象包含了渲染的结果
  const context = {};

  const html = ReactDOMServer.renderToString(
    <StaticRouter location={req.url} context={context}>
      <App />
    </StaticRouter>
  );

  // 如果使用 <Redirect>,context.url 将包含要重定向到的 URL
  if (context.url) {
    res.writeHead(302, {
      Location: context.url
    });
    res.end();
  } else {
    res.write(html);
    res.end();
  }
}).listen(3000);

basename: string

所有位置的基准 URL。basename 的正确格式是前面有一个前导斜杠,但不能有尾部斜杠。

 

<StaticRouter basename="/calendar">
  <Link to="/today" />
</StaticRouter>

上例中的 <Link> 最终将被呈现为:

 

<a href="/calendar/today" />

location: string

服务器收到的 URL,可能是 node server 上的 req.url

 

<StaticRouter location={req.url}>
  <App />
</StaticRouter>

location: object

一个形如 {pathname, search, hash, state} 的位置对象。

 

<StaticRouter location={{ pathname: '/bubblegum' }}>
  <App />
</StaticRouter>

context: object

一个普通的 JavaScript 对象。在渲染过程中,组件可以向对象添加属性以存储有关渲染的信息。

 

const context = {};

<StaticRouter context={context}>
  <App />
</StaticRouter>

当一个 <Route> 匹配时,它将把 context 对象传递给呈现为 staticContext 的组件。查看服务器渲染指南以获取有关如何自行完成此操作的更多信息。

渲染之后,可以使用这些属性来配置服务器的响应。

 

if (context.status === '404') {
  // ...
}

children: node

要呈现的单个子元素(组件)

<Switch>

用于渲染与路径匹配的第一个子 <Route><Redirect>

这与仅仅使用一系列 <Route> 有何不同?

<Switch> 只会渲染一个路由。相反,仅仅定义一系列 <Route> 时,每一个与路径匹配的 <Route> 都将包含在渲染范围内。考虑如下代码:

 

<Route path="/about" component={About} />
<Route path="/:user" component={User} />
<Route component={NoMatch} />

如果 URL 是 /about,那么 <About><User><NoMatch> 将全部渲染,因为它们都与路径匹配。这是通过设计,允许我们以很多方式将 <Route> 组合成我们的应用程序,例如侧边栏和面包屑、引导标签等。

但是,有时候我们只想选择一个 <Route> 来呈现。比如我们在 URL 为 /about 时不想匹配 /:user(或者显示我们的 404 页面),这该怎么实现呢?以下就是如何使用 <Switch> 做到这一点:

 

import { Switch, Route } from 'react-router';

<Switch>
  <Route exact path="/" component={Home} />
  <Route path="/about" component={About} />
  <Route path="/:user" component={User} />
  <Route component={NoMatch} />
</Switch>

现在,当我们在 /about 路径时,<Switch> 将开始寻找匹配的 <Route>。我们知道,<Route path="/about" /> 将会被正确匹配,这时 <Switch> 会停止查找匹配项并立即呈现 <About>。同样,如果我们在 /michael 路径时,那么 <User> 会呈现。

这对于动画转换也很有用,因为匹配的 <Route> 与前一个渲染位置相同。

 

<Fade>
  <Switch>
    {/* 这里只会渲染一个子元素 */}
    <Route />
    <Route />
  </Switch>
</Fade>

<Fade>
  <Route />
  <Route />
  {/* 这里总是会渲染两个子元素,也有可能是空渲染,这使得转换更加麻烦 */}
</Fade>

location: object

用于匹配子元素而不是当前历史位置(通常是当前的浏览器 URL)的 location 对象。

children: node

所有 <Switch> 的子元素都应该是 <Route><Redirect>。只有第一个匹配当前路径的子元素将被呈现。

<Route> 组件使用 path 属性进行匹配,而 <Redirect> 组件使用它们的 from 属性进行匹配。没有 path 属性的 <Route> 或者没有 from 属性的 <Redirect> 将始终与当前路径匹配。

当在 <Switch> 中包含 <Redirect> 时,你可以使用任何 <Route> 拥有的路径匹配属性:pathexactstrictfrom 只是 path 的别名。

如果给 <Switch> 提供一个 location 属性,它将覆盖匹配的子元素上的 location 属性。

 

<Switch>
  <Route exact path="/" component={Home} />
  <Route path="/users" component={Users} />
  <Redirect from="/accounts" to="/users" />
  <Route component={NoMatch} />
</Switch>



作者:强子_30fd
链接:https://www.jianshu.com/p/97e4af32811a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Router DOM 的相关文章

  • 对 React Hook的闭包陷阱的理解,有哪些解决方案?

    hooks中 奇怪 其实符合逻辑 的 闭包陷阱 的场景 同时 在许多 react hooks 的文章里 也能看到 useRef 的身影 那么为什么使用 useRef 又能摆脱 这个 闭包陷阱 搞清楚这些问题 将能较大的提升对 react h
  • Ionic3开发教程 - 开发(2)

    Ionic3开发系列教程Ionic3开发教程 环境准备 1 Ionic3开发教程 开发 2 Ionic3开发教程 发布Android版本 3 Ionic3开发教程 发布IOS版本 4 Ionic3开发教程 更新 5 本文中介绍的Ionic3
  • react 使用 scss

    react 使用 scss 日常记录开发中遇到的坑 1 使用 npm install sass loader node sass S 进行安装 2 在页面中直接使用 有时候可以 有时候不行 原因 我个人觉得安装的两个插件本版兼容问题 nod
  • 一文揭秘饿了么跨端技术的演进、实践与落地

    本文会先带领大家一起简单回顾下跨端技术背景与演进历程与在这一波儿接着一波儿的跨端浪潮中的饿了么跨端现状 以及在这个背景下 相较于业界基于 React Vue 研发习惯出发的各种跨端方案 饿了么为什么会选择走另外一条路 这个过程中我们的一些思
  • React-(4)React中的事件绑定

    React中的事件绑定 在 React 组件中 每个方法的上下文都会指向该组件的实例 即自动绑定 this 为当前组件 而且 React 还会对这种引用进行缓存 以达到 CPU 和内存的最优化 在使用 ES6 classes 或者纯函数时
  • React的超详细讲解

    React React的重点 webpack webpack 是一个现代 JavaScript 应用程序的静态模块打包器 module bundler 当 webpack 处理应用程序时 它会递归地构建一个依赖关系图 dependency
  • react之纯函数、函数组件、类组件、纯组件

    一 纯函数 Pure Function 定义 一个函数的返回结果只依赖于它的参数 并且在执行的过程中没有副作用 我们就把该函数称作纯函数 特点 1 函数的返回结果只依赖与它的参数 同一个输入只能有同一个输出 let foo a b gt a
  • react和react jsx基础

    本文是个人学习笔记 例子都是来自React Native官网 之前不是做前端的 没有使用过react 要学习react native做混合开发 react 包括react jsx还是得补补 react和react jsx react是一个j
  • React(一):React的设计哲学 - 简单之美

    React 一 React的设计哲学 简单之美 React 二 React开发神器Webpack React 三 理解JSX和组件 React 四 虚拟DOM Diff算法解析 React 五 使用Flux搭建React应用程序架构 Rea
  • React解密:React Hooks函数之useCallback和useMemo

    之所以将useCallback和useMemo放到一起 从某种意义上说 他们都是性能优化的始作俑者 他们也有很多的共性 我们先来回顾一下class组件性能优化的点 调用 setState 就会触发组件的重新渲染 无论前后 state 是否相
  • React实现关键字高亮

    先看效果 实现很简单通过以下这个函数 highLight text keyword gt return text split keyword flatMap str gt span keyword span str slice 1 展示某段
  • umi 后台管理demo

    umi 后台管理demo umi react ts dva antd egg 有待优化 简单的前后端管理demo 接口提供增删查改 前端也有相应功能 github代码 https github com huiBuiling ql admin
  • React、Vue2.x、Vue3.0的diff算法

    前言 本文章不讲解 vDom 实现 mount 挂载 以及 render 函数 只讨论三种 diff 算法 VNode 类型不考虑 component functional component Fragment Teleport 只考虑 E
  • React class组件、react-hook函数组件分别实现五子棋

    react class类组件 react hook函数组件分别实现五子棋 前言 使用create react app脚手架简单搭建 不用安装其他依赖 纯 js css实现 这里就只是简单的说明目录结构和思路 具体的代码实现请转到 Githu
  • react 父组件调用子组件的方法

    子组件中 const child forwardRef props ref gt useImperativeHandle ref gt 这里面的方法是暴露给父组件的 test console log 我是组件里的test方法 test2 t
  • react之封装有无Token(路由权限控制)的高阶组件

    TOC 前景 有些路由页面内的内容信息比较敏感 如果用户没有经过登录获取到有效Token 是没有权限跳转的 根据Token的有 无控制当前路由是否可以跳转就是路由的权限控制 技术方案 实现步骤 1 在 components 目录中 创建 A
  • React Jsx转换成真实DOM过程?

    面试官 说说React Jsx转换成真实DOM过程 一 是什么 react 通过将组件编写的 JSX 映射到屏幕 以及组件中的状态发生了变化之后 React 会将这些 变化 更新到屏幕上 在前面文章了解中 JSX 通过 babel 最终转化
  • React Jsx转换成真实DOM过程?

    面试官 说说React Jsx转换成真实DOM过程 一 是什么 react 通过将组件编写的 JSX 映射到屏幕 以及组件中的状态发生了变化之后 React 会将这些 变化 更新到屏幕上 在前面文章了解中 JSX 通过 babel 最终转化
  • 为什么我应该在 mobx 中使用动作装饰器

    即使在阅读了文档之后 我也试图了解 mobx 中动作装饰器的有用性 https mobx js org refguide action html https mobx js org refguide action html 仍然想知道为什么
  • mobx中无法观察到对象的深层变化

    我在反应中使用 mobx 6 3 12 管理状态 但我无法观察到物体的深层变化 这是我的消息来源 store class ApiStore values name author constructor makeObservable this

随机推荐

  • windows Server 2008 R2服务器IIS环境启用TLS 1.2

    windows Server 2008 R2服务器IIS环境启用TLS 1 2 配置TLS1 2 分为2步 添加TLS配置和禁用老的SSL版本 提供两种方法 选择其中一种就行了 手动设置 打开注册表 运行regedit 找到 HKEY LO
  • kettle转换js实现MD5加密

    Script here js文件与转换文件保存路径一样LoadScriptFile getVariable Internal Transformation Filename Directory MD5 js var pass usernam
  • python【2】python3 的CSV数据规整化1

    最近分析一套数据 是csv格式的数据 必须是python分析数据比较顺手啊 于是研究一下csv模块 由于py的版本问题 3的资料中文的很少 所以记录一下 方便以后的学习 点击打开链接 上面的链接是python官网给的文档 英语好的建议看原版
  • 回归预测

    回归预测 MATLAB实现GRNN广义回归神经网络多输入多输出预测 目录 回归预测 MATLAB实现GRNN广义回归神经网络多输入多输出预测 预测效果 基本介绍 程序设计 往期精彩 参考资料 预测效果 基本介绍 MATLAB实现GRNN广义
  • 组合特征(三)tfidf(word+article+length)

    特征拼接 拼接文章长度 1 载入特征 2 读文章长度 3 特征缩放 拼接特征 import pickle 载入特征 with open tfidf word article pkl rb as f x train y train y tes
  • 【数字 IC】从底层重新认识 D 触发器、建立时间和保持时间

    目录 1 NMOS 和 PMOS 2 MOS 管搭建逻辑门 3 锁存器和触发器 3 1 交叉耦合反相器 3 2 SR 锁存器 3 3 D 锁存器 3 4 D 触发器 4 D 触发器的建立 保持时间 1 NMOS 和 PMOS MOSFET
  • 制作镜像

    2017 03 10 一直以来 都没有自己制作过景象 这次我得自己尝试下 https docs openstack org image guide virt install html 这里是官方的教程 2017 03 11 目前实验室制作镜
  • whistle代理配置帮助文档

    背景 Android开发需要与服务器调试API接口 whistle可以帮助配置代理的方式访问测试环境 并且联调抓包也非常方便 一 安装whistle 1 下载Node js 下载地址 https nodejs org en 下载完成后安装即
  • Servlet详解(二):request和response对象

    什么是request和response request对象是服务器对浏览器请求的封装 而response是服务器对服务器响应的封装 request用来取出请求信息 而response则用来添加要返回给浏览器的信息 使用response对象设
  • SpringBoot学习:整合shiro(验证码功能和登录次数限制功能)

    项目下载地址 http download csdn NET detail aqsunkai 9805821 一 验证码 首先login jsp里增加了获取验证码图片的标签 h1 style margin left 30px 登录页面 h1
  • SQLsever用户权限管理和数据库映射

    SQL Server2005中 用户映射 里成员身份选项的意思 用户映射 public 维护所有默认权限 db owner 执行所有数据库角色活动 db accessadmin 添加和删除数据库用户 组及角色 db ddladmin 添加
  • jQuery:mouseover and Increase the Size of an Image

  • mysql+中与当前时间比较大小_Mysql中时间加减和比较大小的方法

    在Oracle中使用时间函数to date习惯了 在Oracle中时间的加减也非常简单 直接加减即可 在Mysql中时间的函数很多 非常自由 在项目中经常用到的就是时间的加减 比如60天前 Oracle中直接就是sysdate 60 Mys
  • Acwing785. 快速排序

    Acwing785 快速排序 题目描述 代码展示 题目描述 代码展示 include
  • Golang 下划线语义

    丢弃返回值 err Test 用在变量接口断言 用来判断对象是否实现了接口 package main import fmt yangxd te var Foo Dog 如果没有实现 则 会编译失败 用来判断Dog 对象是否实现了Foo 接口
  • FPGA时序约束--基础理论篇

    FPGA开发过程中 离不开时序约束 那么时序约束是什么 简单点说 FPGA芯片中的逻辑电路 从输入到输出所需要的时间 这个时间必须在设定的时钟周期内完成 更详细一点 即需要满足建立和保持时间 时序约束可以让VIvado和Quartus等FP
  • ubuntu下安装opencv2.4.13成功版

    本文参考相关链接 http blog csdn net honyniu article details 46390097 系 统 Ubuntu 14 04 x64 opencv版本 2 4 13 安装之前 系统已经安装好cuda7 5和cu
  • 2023华为OD机试真题【机房布局/栈】

    小明正在规划一个大型数据中心机房 需要满足的条件是 确保在每个机柜边上至少要有一个电箱 已知 机房排成1排 我们用M表示机柜 I表示间隔 请你返回这整排机房 至少需要多少个电箱 如果无解请返回 1 输入描述 第一行输入一个字符串 由 M 和
  • uniapp tabbar不显示,html里面显示display:none

    第一种 页面一进来是tabbar 就要保证pages和tabbar的list的pagepath的第一个路径要一致 第二种 从登录页面跳进主页面 pages的第一个路径是登录页 但是tabbar的路径就是几个组件页面的路径 这样就不用保证pa
  • React Router DOM

    大家可以在https reacttraining com react router web api StaticRouter basename string 看相关例子