本文整理汇总了TypeScript中nerv-utils.isArray函数的典型用法代码示例。如果您正苦于以下问题:TypeScript isArray函数的具体用法?TypeScript isArray怎么用?TypeScript isArray使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了isArray函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的TypeScript代码示例。
示例1: mountVNode
export function mountVNode (vnode: VNode, isSvg?: boolean, parentContext?, parentComponent?) {
if (vnode.isSvg) {
isSvg = true
} else if (vnode.type === 'svg') {
isSvg = true
/* istanbul ignore next */
} else if (!isSupportSVG) {
isSvg = false
}
if (isSvg) {
vnode.namespace = SVG_NAMESPACE
vnode.isSvg = isSvg
}
const domNode = !isSvg
? doc.createElement(vnode.type)
: doc.createElementNS(vnode.namespace, vnode.type)
setProps(domNode, vnode, isSvg as boolean)
if (vnode.type === 'foreignObject') {
isSvg = false
}
const children = vnode.children
if (isArray(children)) {
for (let i = 0, len = children.length; i < len; i++) {
mountChild(children[i] as VNode, domNode, parentContext, parentComponent, isSvg)
}
} else {
mountChild(children as VNode, domNode, parentContext, parentComponent, isSvg)
}
vnode.dom = domNode
if (vnode.ref !== null) {
Ref.attach(vnode, vnode.ref, domNode)
}
return domNode
}
开发者ID:lineCode,项目名称:nerv,代码行数:34,代码来源:create-element.ts
示例2: h
function h (type: string, props: Props, children?: VirtualChildren) {
let childNodes
if (props.children) {
if (!children) {
children = props.children
}
delete props.children
}
if (isArray(children)) {
childNodes = []
addChildren(childNodes, children as any, type)
} else if (isString(children) || isNumber(children)) {
children = createVText(String(children))
} else if (!isValidElement(children)) {
children = EMPTY_CHILDREN
}
return createVNode(
type,
props,
childNodes !== undefined ? childNodes : children,
props.key,
props.namespace,
props.owner,
props.ref
) as VNode
}
开发者ID:lineCode,项目名称:nerv,代码行数:26,代码来源:h.ts
示例3: cloneElement
export default function cloneElement (vnode, props?: object, ...children): any {
if (isVText(vnode)) {
vnode.dom = null
return vnode
}
if (isString(vnode)) {
return createVText(vnode)
}
const properties = clone(extend(clone(vnode.props), props))
if (vnode.namespace) {
properties.namespace = vnode.namespace
}
let childrenTmp =
(arguments.length > 2 ?
[].slice.call(arguments, 2) :
vnode.children || properties.children) || []
if (childrenTmp.length) {
if (childrenTmp.length === 1) {
childrenTmp = children[0]
}
}
if (isArray(vnode)) {
return vnode.map((item) => {
return cloneElement(item)
})
}
const newVNode = createElement(vnode.type, properties)
if (isArray(childrenTmp)) {
const _children = childrenTmp.map((child) => {
return cloneElement(child, child.props)
})
if (isVNode(newVNode)) {
newVNode.children = _children
}
newVNode.props.children = _children
} else if (childrenTmp) {
if (isVNode(newVNode)) {
newVNode.children = childrenTmp
}
newVNode.props.children = cloneElement(childrenTmp, childrenTmp.props)
}
return newVNode
}
开发者ID:lineCode,项目名称:nerv,代码行数:43,代码来源:clone-element.ts
示例4: flatten
function flatten (arr, result) {
for (let i = 0, len = arr.length; i < len; i++) {
const value = arr[i]
if (isArray(value)) {
flatten(value, result)
} else {
result.push(value)
}
}
return result
}
开发者ID:lineCode,项目名称:nerv,代码行数:11,代码来源:children.ts
示例5: unmountChildren
export function unmountChildren (
children: VirtualChildren,
parentDom?: Element
) {
if (isArray(children)) {
for (let i = 0, len = children.length; i < len; i++) {
unmount(children[i], parentDom)
}
} else {
unmount(children, parentDom)
}
}
开发者ID:lineCode,项目名称:nerv,代码行数:12,代码来源:unmount.ts
示例6: patchChildren
export function patchChildren (
parentDom: Element,
lastChildren,
nextChildren,
context: object,
isSvg: boolean
) {
if (lastChildren === nextChildren) {
return
}
const lastChildrenIsArray = isArray(lastChildren)
const nextChildrenIsArray = isArray(nextChildren)
if (lastChildrenIsArray && nextChildrenIsArray) {
patchArrayChildren(parentDom, lastChildren, nextChildren, context, isSvg)
} else if (!lastChildrenIsArray && !nextChildrenIsArray) {
patch(lastChildren, nextChildren, parentDom, context, isSvg)
} else if (lastChildrenIsArray && !nextChildrenIsArray) {
patchArrayChildren(parentDom, lastChildren, [nextChildren], context, isSvg)
} else if (!lastChildrenIsArray && nextChildrenIsArray) {
patchArrayChildren(parentDom, [lastChildren], nextChildren, context, isSvg)
}
}
开发者ID:lineCode,项目名称:nerv,代码行数:22,代码来源:patch.ts
示例7: addChildren
function addChildren (
childNodes: VirtualNode[],
children: VirtualNode | VirtualNode[],
type: string
) {
if (isString(children) || isNumber(children)) {
childNodes.push(createVText(String(children)))
} else if (isValidElement(children)) {
childNodes.push(children)
} else if (isArray(children)) {
for (let i = 0; i < children.length; i++) {
addChildren(childNodes, children[i], type)
}
}
}
开发者ID:lineCode,项目名称:nerv,代码行数:15,代码来源:h.ts
示例8: createElement
function createElement (
vnode: VirtualNode | VirtualNode[],
isSvg?: boolean,
parentContext?,
parentComponent?
): Element | Text | Comment | DocumentFragment | null {
let domNode
if (isValidElement(vnode)) {
const vtype = vnode.vtype
if (vtype & (VType.Composite | VType.Stateless)) {
domNode = (vnode as CompositeComponent).init(parentContext, parentComponent)
options.afterMount(vnode as CompositeComponent)
} else if (vtype & VType.Text) {
domNode = doc.createTextNode((vnode as any).text);
(vnode as any).dom = domNode
} else if (vtype & VType.Node) {
domNode = mountVNode(vnode as any, isSvg, parentContext, parentComponent)
} else if (vtype & VType.Void) {
domNode = (vnode as any).dom
}
} else if (isString(vnode) || isNumber(vnode)) {
domNode = doc.createTextNode(vnode as string)
} else if (isNullOrUndef(vnode) || (vnode as any) === false) {
domNode = doc.createTextNode('')
} else if (isArray(vnode)) {
domNode = doc.createDocumentFragment()
vnode.forEach((child) => {
if (!isInvalid(child)) {
const childNode = createElement(child, isSvg, parentContext, parentComponent)
if (childNode) {
domNode.appendChild(childNode)
}
}
})
} else {
throw new Error('Unsupported VNode.')
}
return domNode
}
开发者ID:lineCode,项目名称:nerv,代码行数:39,代码来源:create-element.ts
示例9: only
return children.length
},
only (children: Array<VirtualChildren | any>): VirtualChildren | any {
children = Children.toArray(children)
if (children.length !== 1) {
throw new Error('Children.only() expects only one child.')
}
return children[0]
},
toArray (
children: Array<VirtualChildren | any>
): Array<VirtualChildren | any> {
if (isNullOrUndef(children)) {
return []
}
if (isArray(children)) {
const result = []
flatten(children, result)
return result
}
return EMPTY_CHILDREN.concat(children)
}
}
function flatten (arr, result) {
for (let i = 0, len = arr.length; i < len; i++) {
const value = arr[i]
if (isArray(value)) {
flatten(value, result)
开发者ID:lineCode,项目名称:nerv,代码行数:31,代码来源:children.ts
示例10: renderVNodeToString
function renderVNodeToString (vnode, parent, context, isSvg?: boolean) {
if (isInvalid(vnode)) {
return ''
}
const { type, props, children } = vnode
if (isVText(vnode)) {
return encodeEntities(vnode.text)
} else if (isVNode(vnode)) {
let renderedString = `<${type}`
let html
if (!isNullOrUndef(props)) {
for (let prop in props) {
const value = props[prop]
if (skipAttributes[prop]) {
continue
}
if (prop === 'dangerouslySetInnerHTML') {
html = value.__html
} else if (prop === 'style') {
const styleStr = renderStylesToString(value)
renderedString += styleStr ? ` style="${renderStylesToString(value)}"` : ''
} else if (prop === 'class' || prop === 'className') {
renderedString += ` class="${isString(value)
? value
: hashToClassName(value)}"`
} else if (prop === 'defaultValue') {
if (!props.value) {
renderedString += ` value="${encodeEntities(value)}"`
}
} else if (prop === 'defaultChecked') {
if (!props.checked) {
renderedString += ` checked="${value}"`
}
} else if (isSvg && prop.match(/^xlink\:?(.+)/)) {
prop = prop.toLowerCase().replace(/^xlink\:?(.+)/, 'xlink:$1')
renderedString += ` ${prop}="${encodeEntities(value)}"`
} else {
if (isString(value)) {
renderedString += ` ${prop}="${encodeEntities(value)}"`
} else if (isNumber(value)) {
renderedString += ` ${prop}="${value}"`
} else if (value === true) {
renderedString += ` ${prop}`
}
}
}
}
if (isVoidElements[type]) {
renderedString += `/>`
} else {
renderedString += `>`
if (html) {
renderedString += html
} else if (!isInvalid(children)) {
if (isString(children)) {
renderedString += children === '' ? ' ' : encodeEntities(children)
} else if (isNumber(children)) {
renderedString += children + ''
} else if (isArray(children)) {
for (let i = 0, len = children.length; i < len; i++) {
const child = children[i]
if (isString(child)) {
renderedString += child === '' ? ' ' : encodeEntities(child)
} else if (isNumber(child)) {
renderedString += child
} else if (!isInvalid(child)) {
isSvg = type === 'svg' ? true : type === 'foreignObject' ? false : isSvg
renderedString += renderVNodeToString(
child,
vnode,
context,
isSvg
)
}
}
} else {
isSvg = type === 'svg' ? true : type === 'foreignObject' ? false : isSvg
renderedString += renderVNodeToString(children, vnode, context, isSvg)
}
}
if (!isVoidElements[type]) {
renderedString += `</${type}>`
}
}
return renderedString
} else if (isComposite(vnode)) {
const instance = new type(props, context)
instance._disable = true
instance.props = props
instance.context = context
if (isFunction(instance.componentWillMount)) {
instance.componentWillMount()
}
const rendered = instance.render()
if (isFunction(instance.getChildContext)) {
context = extend(clone(context), instance.getChildContext())
}
return renderVNodeToString(rendered, vnode, context, isSvg)
} else if (isStateless(vnode)) {
const rendered = type(props, context)
//.........这里部分代码省略.........
开发者ID:lineCode,项目名称:nerv,代码行数:101,代码来源:index.ts
注:本文中的nerv-utils.isArray函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论