本文整理汇总了TypeScript中nerv-shared.isNullOrUndef函数的典型用法代码示例。如果您正苦于以下问题:TypeScript isNullOrUndef函数的具体用法?TypeScript isNullOrUndef怎么用?TypeScript isNullOrUndef使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了isNullOrUndef函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: unmount
export function unmount (vnode, parentDom?) {
if (isInvalid(vnode)) {
return
}
const vtype = vnode.vtype
// Bitwise operators for better performance
// see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
const dom = vtype & VType.Composite ? vnode.component.dom : vnode.dom
if ((vtype & (VType.Composite | VType.Stateless)) > 0) {
options.beforeUnmount(vnode)
vnode.destroy()
} else if ((vtype & VType.Node) > 0) {
const { props, children, ref } = vnode
unmountChildren(children)
for (const propName in props) {
if (isAttrAnEvent(propName)) {
detachEvent(dom, propName, props[propName])
}
}
if (ref !== null) {
Ref.detach(vnode, ref, dom)
}
}
if (!isNullOrUndef(parentDom) && !isNullOrUndef(dom)) {
parentDom.removeChild(dom)
}
// vnode.dom = null
}
示例2: patchProps
function patchProps (
domNode: Element,
nextProps: Props,
previousProps: Props,
lastVnode: VNode,
isSvg?: boolean
) {
for (const propName in previousProps) {
const value = previousProps[propName]
if (isNullOrUndef(nextProps[propName]) && !isNullOrUndef(value)) {
if (isAttrAnEvent(propName)) {
detachEvent(domNode, propName, value)
} else if (propName === 'dangerouslySetInnerHTML') {
domNode.textContent = ''
} else if (propName === 'className') {
domNode.removeAttribute('class')
} else {
domNode.removeAttribute(propName)
}
}
}
for (const propName in nextProps) {
patchProp(
domNode,
propName,
previousProps[propName],
nextProps[propName],
lastVnode,
isSvg
)
}
}
示例3: isKeyed
function isKeyed (lastChildren: VNode[], nextChildren: VNode[]): boolean {
return (
nextChildren.length > 0 &&
!isNullOrUndef(nextChildren[0]) &&
!isNullOrUndef(nextChildren[0].key) &&
lastChildren.length > 0 &&
!isNullOrUndef(lastChildren[0]) &&
!isNullOrUndef(lastChildren[0].key)
)
}
示例4: attachNewNode
function attachNewNode (parentDom, newNode, nextNode) {
if (isNullOrUndef(nextNode)) {
parentDom.appendChild(newNode)
} else {
parentDom.insertBefore(newNode, nextNode)
}
}
示例5: mountComponent
export function mountComponent (vnode: FullComponent, parentContext: object, parentComponent) {
const ref = vnode.props.ref
vnode.component = new vnode.type(vnode.props, parentContext)
const component = vnode.component
if (isComponent(parentComponent)) {
component._parentComponent = parentComponent
}
if (isFunction(component.componentWillMount)) {
errorCatcher(() => {
(component as any).componentWillMount()
}, component)
component.state = component.getState()
}
component._dirty = false
const rendered = renderComponent(component)
component._rendered = rendered
if (isFunction(component.componentDidMount)) {
readyComponents.push(component)
}
if (!isNullOrUndef(ref)) {
readyComponents.push(() => Ref.attach(vnode, ref, component.dom))
}
const dom = (vnode.dom = component.dom = mountVNode(
rendered,
getChildContext(component, parentContext),
component
) as Element)
component._disable = false
return dom
}
示例6: setStyle
function setStyle (domStyle, style, value) {
if (isNullOrUndef(value) || (isNumber(value) && isNaN(value))) {
domStyle[style] = ''
return
}
if (style === 'float') {
domStyle['cssFloat'] = value
domStyle['styleFloat'] = value
return
}
domStyle[style] =
!isNumber(value) || IS_NON_DIMENSIONAL.test(style) ? value : value + 'px'
}
示例7: unmountComponent
export function unmountComponent (vnode: FullComponent) {
const component = vnode.component
if (isFunction(component.componentWillUnmount)) {
errorCatcher(() => {
(component as any).componentWillUnmount()
}, component)
}
component._disable = true
unmount(component._rendered)
if (!isNullOrUndef(vnode.props.ref)) {
Ref.detach(vnode, vnode.props.ref, vnode.dom as any)
}
}
示例8: patch
export function patch (
lastVnode,
nextVnode,
lastDom: Element,
context: object,
isSvg?: boolean
) {
lastDom = (lastVnode && lastVnode.dom) || lastDom
if (isVText(nextVnode) && isVText(lastVnode)) {
return patchVText(lastVnode, nextVnode)
}
let newDom
if (isSameVNode(lastVnode, nextVnode)) {
if (isVNode(nextVnode)) {
isSvg = isNullOrUndef(isSvg) ? lastVnode.isSvg : isSvg
if (isSvg) {
nextVnode.isSvg = isSvg
}
patchProps(lastDom, nextVnode.props, lastVnode.props, lastVnode, isSvg)
patchChildren(
lastDom,
lastVnode.children,
nextVnode.children,
context,
isSvg as boolean
)
if (nextVnode.ref !== null) {
Ref.update(lastVnode, nextVnode, lastDom)
}
newDom = lastDom
} else if (isWidget(nextVnode)) {
newDom = nextVnode.update(lastVnode, nextVnode, context, lastDom)
options.afterUpdate(nextVnode)
}
(nextVnode as any).dom = newDom
} else {
const parentNode = lastDom.parentNode
const nextSibling = lastDom.nextSibling
unmount(lastVnode, parentNode)
newDom = createElement(nextVnode, isSvg, context)
if (nextVnode !== null) {
nextVnode.dom = newDom
}
if (parentNode !== null) {
parentNode.insertBefore(newDom as Node, nextSibling)
}
}
return newDom
}
示例9: 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
}
示例10: reRenderComponent
export function reRenderComponent (prev: CompositeComponent, current: CompositeComponent) {
const component = (current.component = prev.component)
const nextProps = current.props
const nextContext = component.context
component._disable = true
if (isFunction(component.componentWillReceiveProps)) {
errorCatcher(() => {
(component as any).componentWillReceiveProps(nextProps, nextContext)
}, component)
}
component._disable = false
component.prevProps = component.props
component.prevState = component.state
component.prevContext = component.context
component.props = nextProps
component.context = nextContext
if (!isNullOrUndef(nextProps.ref)) {
Ref.update(prev, current)
}
updateComponent(component)
return component.dom
}