ReactTraining/history v4 类库源码注解(

2018-08-26  本文已影响70人  Levid_GC

类型一览

路径

Pathname

路径名。

type Pathname = string;

Search

查询。

type Search = string;

Hash

哈希。

type Hash = string;

Path

路径。

type Path: string;

路径是由路径名,查询,哈希三部分共同组成。

地址

Href

超链接。

type Href = string;

LocationState

地址状态。

type LocationState = any;

LocationKey

地址键。

type LocationKey = string;

LocationDescriptorObject

地址描述器对象。

interface LocationDescriptorObject<S = LocationState> {
  pathname?: Pathname;
  search?: Search;
  hash?: Hash;
  state?: S;
  key?: LocationKey;
}

LocationDescriptor

地址描述器。

type LocationDescriptor<S = LocationState> = Path | LocationDescriptorObject<S>;

地址描述器类型实例用于构造下面的地址类型实例。它是一个联合类型,可是路径也可是路径描述器对象。

Location

地址。

interface Location<S = LocationState> {
  pathname: Pathname;
  search: Search;
  hash: Hash;
  state: S;
  key?: LocationKey;
}

WindowDocument 接口类型下面都有一个 location 属性,这个属性的类型是 Location,但是这个 Location 类型与上面列出的地址类型有很多共同点,但是它对浏览器地址栏中的 URL 进行了完整的抽象。比如,它还提供了协议类型、主机名、端口等等信息。但是我们这里的地址类型侧重于 URL 的路径部分,并额外提供了状态和键属性,所以要注意区别。

历史

Action

行为。

type Action = 'PUSH' | 'POP' | 'REPLACE';

行为是针对历史堆栈的,分为压入,弹出和替换。

History

历史。

interface History {
  length: number;
  action: Action;
  location: Location;
  push(path: Path, state?: LocationState): void;
  push(location: LocationDescriptorObject): void;
  replace(path: Path, state?: LocationState): void;
  replace(location: LocationDescriptorObject): void;
  go(n: number): void;
  goBack(): void;
  goForward(): void;
  block(prompt?: boolean | string | TransitionPromptHook): UnregisterCallback;
  listen(listener: LocationListener): UnregisterCallback;
  createHref(location: LocationDescriptorObject): Href;
}

History 接口类型是对 HTML5 history api 的封装,并在之上提供了额外的功能。

转换

TransitionHook

转换钩子。

type TransitionHook = (location: Location, callback: (result: any) => void) => any;

TransitionPromptHook

转换提示钩子。

type TransitionPromptHook = (location: Location, action: Action) => string | false | void;

函数功能

PathUtils

LocationUtils

DOMUtils

参考资料

上一篇 下一篇

猜你喜欢

热点阅读