I hereby claim:
- I am paularmstrong on github.
- I am paularmstrong (https://keybase.io/paularmstrong) on keybase.
- I have a public key ASBFEf8k-OMRv7mD5wCCWTGMs7hwhdni7EO1LxPII3dnPwo
To claim this, I am signing this object:
| const state = { | |
| timelines: { | |
| home: { | |
| tweets: [ | |
| '123', | |
| '456', | |
| '789', | |
| '012' | |
| ] | |
| } |
I hereby claim:
To claim this, I am signing this object:
| const FetchStatus = { | |
| FAILED: 'failed', | |
| LOADED: 'loaded', | |
| LOADING: 'loading', | |
| NONE: 'none' | |
| }; | |
| class LoadingRenderer extends React.Component { | |
| static propTypes = { | |
| fetchStatus: React.PropTypes.oneOf(Object.values(FetchStatus)).isRequired, |
| function memorySizeOf(obj) { | |
| var bytes = 0; | |
| function sizeOf(obj) { | |
| if(obj !== null && obj !== undefined) { | |
| switch(typeof obj) { | |
| case 'number': | |
| bytes += 8; | |
| break; | |
| case 'string': |
| function memorySizeOf(obj) { | |
| var bytes = 0; | |
| function sizeOf(obj) { | |
| if(obj !== null && obj !== undefined) { | |
| switch(typeof obj) { | |
| case 'number': | |
| bytes += 8; | |
| break; | |
| case 'string': |
| import hoistStatics from 'hoist-non-react-statics'; | |
| import React from 'react'; | |
| /** | |
| * Allows two animation frames to complete to allow other components to update | |
| * and re-render before mounting and rendering an expensive `WrappedComponent`. | |
| */ | |
| export default function deferComponentRender(WrappedComponent) { | |
| class DeferredRenderWrapper extends React.Component { | |
| constructor(props, context) { |
| const plugins = [ | |
| // extract vendor and webpack's module manifest | |
| new webpack.optimize.CommonsChunkPlugin({ | |
| names: [ 'vendor', 'manifest' ], | |
| minChunks: Infinity | |
| }), | |
| // extract common modules from all the chunks (requires no 'name' property) | |
| new webpack.optimize.CommonsChunkPlugin({ | |
| async: true, | |
| children: true, |
| const HeartIcon = (props = {}) => ( | |
| <svg {...props} viewBox='0 0 ${width} ${height}'> | |
| <g><path d='M38.723 12c-7.187 0-11.16 7.306-11.723 8.131C26.437 19.306 22.504 12 15.277 12 8.791 12 3.533 18.163 3.533 24.647 3.533 39.964 21.891 55.907 27 56c5.109-.093 23.467-16.036 23.467-31.353C50.467 18.163 45.209 12 38.723 12z'></path></g> | |
| </svg> | |
| ); |
| const HeartIcon = (props) => React.createElement('svg', { | |
| ...props, | |
| dangerouslySetInnerHTML: { __html: '<g><path d="M38.723 12c-7.187 0-11.16 7.306-11.723 8.131C26.437 19.306 22.504 12 15.277 12 8.791 12 3.533 18.163 3.533 24.647 3.533 39.964 21.891 55.907 27 56c5.109-.093 23.467-16.036 23.467-31.353C50.467 18.163 45.209 12 38.723 12z"></path></g>' }, | |
| viewBox: '0 0 54 72' | |
| }); |
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()