using mocha/chai/sinon for node.js unit-tests? check out my utility: mocha-stirrer to easily reuse test components and mock require dependencies
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var typeOf = (function(Object, RegExp){ | |
| // WTFPL License - http://en.wikipedia.org/wiki/WTFPL | |
| // thanks to @jdalton and @ljharb | |
| var toString = Object.prototype.toString, | |
| cache = (Object.create || Object)(null); | |
| return function typeOf(Unknown) { | |
| var asString = typeof Unknown; | |
| return asString == 'object' ? ( | |
| Unknown === null ? 'null' : ( | |
| cache[asString = toString.call(Unknown)] || ( |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import React, { Component } from 'react' | |
| import Subapp from './subapp/Root' | |
| class BigApp extends Component { | |
| render() { | |
| return ( | |
| <div> | |
| <Subapp /> | |
| <Subapp /> | |
| <Subapp /> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function monitorEvents(element) { | |
| var log = function(e) { console.log(e);}; | |
| var events = []; | |
| for(var i in element) { | |
| if(i.startsWith("on")) events.push(i.substr(2)); | |
| } | |
| events.forEach(function(eventName) { | |
| element.addEventListener(eventName, log); | |
| }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function waitForElement(selector) { | |
| return new Promise(function(resolve, reject) { | |
| var element = document.querySelector(selector); | |
| if(element) { | |
| resolve(element); | |
| return; | |
| } | |
| var observer = new MutationObserver(function(mutations) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import React, { Component, PropTypes } from 'react' | |
| import { | |
| Text, | |
| View, | |
| TouchableHighlight, | |
| ScrollView, | |
| StatusBar, | |
| Dimensions, | |
| Animated |
All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.
elem.offsetLeft,elem.offsetTop,elem.offsetWidth,elem.offsetHeight,elem.offsetParentelem.clientLeft,elem.clientTop,elem.clientWidth,elem.clientHeightelem.getClientRects(),elem.getBoundingClientRect()
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // getComponent is a function that returns a promise for a component | |
| // It will not be called until the first mount | |
| function asyncComponent(getComponent) { | |
| return class AsyncComponent extends React.Component { | |
| static Component = null; | |
| state = { Component: AsyncComponent.Component }; | |
| componentWillMount() { | |
| if (!this.state.Component) { | |
| getComponent().then(Component => { |