rat-util
- category: Utility
- chinese: Util
目录及方法结构
├── func.js 函数相关的方法│ ├── <Function> noop()│ ├── <Function> makeChain(fn1, ..., fnx)│ ├── <Function> promiseCall(ret, success, failure)│ └── <Function> bindCtx(ctx, fns)├── object.js 对象相关的操作方法│ ├── <Function> typeOf(obj)│ ├── <Function> isArrayLike(obj)│ ├── <Function> isPromise(obj)│ ├── <Function> isPlainObject(obj)│ ├── <Function> each(obj, callback, direction)│ ├── <Function> shallowEqual(objA, objB, compare)│ └── <Function> pickOthers(holdProps, props)├── string.js 字符串操作方法│ ├── <Function> camelcase(str)│ └── <Function> hyphenate(str)├── events.js 事件绑定相关│ ├── <Function> on(node, eventName, callback)│ ├── <Function> off(node, eventName, callback)│ └── <Function> once(node, eventName, callback)├── focus.js 焦点控制│ ├── <Function> getFocusNodeList(node)│ ├── <Function> saveLastFocusNode()│ ├── <Function> clearLastFocusNode()│ ├── <Function> backLastFocusNode()│ └── <Function> limitTabRange(node, e)├── env.js 环境相关的方法│ └── <Number> ieVersion├── dom.js DOM 节点相关的方法│ ├── <Boolean> hasDOM│ ├── <Function> addClass(node, className)│ ├── <Function> removeClass(node, className)│ ├── <Function> toggleClass(node, className)│ ├── <Function> hasClass(node, className)│ ├── <Function> matches(node, selector)│ ├── <Function> getStyle(node, name)│ ├── <Function> setStyle(node, name, value)│ └── <Function> scrollbar()├── support.js 浏览器特性支持度判断│ ├── <Boolean> flex│ ├── <String|false> animation│ └── <String|false> transition├── log.js 日志类方法│ ├── <Function> deprecated(props, instead, component)│ └── <Function> warning(msg)├── guid.js 生成全局唯一 ID└── keycode.js 键盘 keycode map
使用示例
在其它组件中直接引用独立的方法,例如:
;// ... const bindCtx noop = func; static propTypes = onChange: PropTypesfunc type: PropTypesstring // ... ; static defaultProps = onChange: noop ; { superprops; ; } { if ekeyCode === KEYCODEENTER // ... } { const others = obj; return <div className="next-hello" ...others>hello</div> ; }
API
func.js
方法名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
noop | 空方法 | 无 | undefined |
|
bindCtx | 绑定方法上下文 | <Object>ctx <Array>fns |
- | |
makeChain | 将N个方法合并为一个链式方法 | <Function>fn1 ... <Function>fnx |
<Function> |
|
promiseCall | 用于执行回调方法后的逻辑 | <T>ret <Function>success <Function>failure |
- |
; // 在 constructor() 中,将方法的 scope 绑定到 thisfunc; // 将 props 中传入的 onClick 和当前已定义的方法合并const onClick = func; func; func; func;
object.js
方法名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
typeOf | 获取对象的类型 | <T>obj |
<String> |
|
isArrayLike | 是否是数组或类数组对象 | <T>obj |
<Boolean> |
|
isPromise | 是否是一个 Promise 对象 | <T>obj |
<Boolean> |
|
isPlainObject | 是否是一个纯净的对象 | <T>obj |
<Boolean> |
|
each | 数组 (类数组) 和对象的遍历方法 | <Array/Object>obj <Function>callback <Number>direction |
- | direction: -1 表示倒序遍历 |
shallowEqual | 对象浅比较是否相等 | <Object>objA <Object>objB |
<Boolean> |
|
pickOthers | 过滤出其它属性 | <Object/Array>holdProps <Object>props |
<Object> |
|
pickAttrsWith | 过滤出带prefix的属性 | <Object>holdProps <String>prefix |
<Object> |
; // typeOfobj; // 'Object'obj; // 'Array'obj; // 'Date' // isArrayLikeobj; // trueobj; // trueobj; // trueobj; // true // each// 遍历数组obj; // 遍历 json 对象obj;// 遍历 React 子节点obj;// 遍历 argumentsobj; // shallowEqualobj; // true // pickOthersobj;obj;
string.js
方法名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
camelcase | 将字符串转化为坨峰式写法 | <String>str |
<String> |
|
hyphenate | 将字符串转化为连接符写法 | <String>str |
<String> |
; string; // WebkitAnimationNamestring; // component-did-mount
events.js
方法名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
on | 监听事件 | <Element>node <String>eventName <Function>callback |
<Object> |
执行返回的对象的off方法即可以取消事件监听 |
off | 取消监听 | <Element>node <String>eventName <Function>callback |
- | |
once | 单次监听事件 | <Element>node <String>eventName <Function>callback |
<Object> |
; // 监听事件const handler = events; // 取消事件监听handler;
focus.js
方法名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
getFocusNodeList | 列出能获取焦点的子节点 | <Element>node |
<Array> |
|
saveLastFocusNode | 保存最近一次获得焦点的无素 | - | - | |
clearLastFocusNode | 清除焦点记录 | - | - | |
backLastFocusNode | 尝试将焦点切换到上一个元素 | - | - | |
limitTabRange | 在限制的范围内切换焦点 | <Element>node <Event> e |
- |
env.js
属性或方法名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
ieVersion | 获取 IE 浏览器的 ** 渲染引擎 ** 版本 | - | <Number> |
; // ieVersion 在 IE10 渲染模式下envieVersion; // 10
dom.js
属性或方法名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
hasDOM | 是否能使用 DOM | - | <Boolean> |
这是一个属性 |
addClass | 添加 className | <Element>node <String>className |
||
removeClass | 移除 className | <Element>node <String>className |
||
toggleClass | 切换 className | <Element>node <String>className |
<Boolean> |
返回值表示调用后是否有 className |
hasClass | 判断是否有 className | <Element>node <String>className |
<Boolean> |
|
matches | 是否匹配选择器 | <Element>node <String>selector |
<Boolean> |
|
getStyle | 获取元素的样式 | <Element>node <String>name |
<Object/String> |
|
setStyle | 设置元素的样式 | <Element>node <String>name <String>value |
<String> |
参数二支持传 Object 批量设置 |
scrollbar | 页面滚动条的默认大小 | - | <Object> |
返回值包含 width, height 两个属性 |
; domhasDOM; // true or false dom;dom;dom; // truedom; // truedom; // true dom; // 14pxdom; // 15dom;dom; dom; // {width: 10, height: 10}
support.js
属性名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
animation | 是否支持 CSS 动画 | <Object/Boolean> |
||
transition | 是否支持 CSS 过渡 | <Object/Boolean> |
||
flex | 是否支持 flex 布局 | <Boolean> |
; supportanimation; // {end: 'animationend'}、{end: 'webkitAnimationEnd'} or falsesupporttransition; // {end: 'transitionend'}、{end: 'webkitTransitionEnd'} or falsesupportflex; // boolean
log.js
方法名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
deprecated | 方法或属性不再使用的提示 | <String> props <String> instead <String> component |
||
warning | 控制台警告 | <String> msg |
; // deprecatedlog; // Warning: onBeforeClose is deprecated at [ Dialog ], use [ beforeClose ] instead of it.
guid.js
方法名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
- | 生成全局唯一 ID | <String> |
; ; // j7jv509c; // prefix-j7jv509d
keycode.js
属性名 | 描述 | 参数 | 返回值 | 备注 |
---|---|---|---|---|
- | 键盘 keycode map | <Object> |
; KEYCODETAB // 9KEYCODEENTER // 13KEYCODESHIFT // 16KEYCODECTRL // 17KEYCODEALT // 18KEYCODEESC // 27 alias as 'ESCAPE'KEYCODESPACE // 32KEYCODEEND // 35KEYCODEHOME // 36KEYCODELEFT // 37 alias as 'LEFT_ARROW'KEYCODEUP // 38 alias as 'UP_ARROW'KEYCODERIGHT // 39 alias as 'RIGHT_ARROW'KEYCODEDOWN // 40 alias as 'DOWN_ARROW' // MacOSKEYCODECONTROL // 17 same as 'CTRL'KEYCODEOPTION // 18 same as 'ALT'KEYCODECMD // 91 alias as 'COMMAND'