web: perf++

This commit is contained in:
Maximilian Hils 2016-07-21 03:00:10 -07:00
parent 6ffeaaebed
commit 3d6f714b5d
3 changed files with 23 additions and 5 deletions

View File

@ -1,6 +1,7 @@
import React, { PropTypes } from 'react' import React, { PropTypes } from 'react'
import classnames from 'classnames' import classnames from 'classnames'
import columns from './FlowColumns' import columns from './FlowColumns'
import { pure } from '../../utils'
FlowRow.propTypes = { FlowRow.propTypes = {
onSelect: PropTypes.func.isRequired, onSelect: PropTypes.func.isRequired,
@ -9,7 +10,7 @@ FlowRow.propTypes = {
selected: PropTypes.bool, selected: PropTypes.bool,
} }
export default function FlowRow({ flow, selected, highlighted, onSelect }) { function FlowRow({ flow, selected, highlighted, onSelect }) {
const className = classnames({ const className = classnames({
'selected': selected, 'selected': selected,
'highlighted': highlighted, 'highlighted': highlighted,
@ -19,10 +20,12 @@ export default function FlowRow({ flow, selected, highlighted, onSelect }) {
}) })
return ( return (
<tr className={className} onClick={() => onSelect(flow)}> <tr className={className} onClick={() => onSelect(flow.id)}>
{columns.map(Column => ( {columns.map(Column => (
<Column key={Column.name} flow={flow}/> <Column key={Column.name} flow={flow}/>
))} ))}
</tr> </tr>
) )
} }
export default pure(FlowRow)

View File

@ -22,7 +22,7 @@ class MainView extends Component {
flows={flows} flows={flows}
selected={selectedFlow} selected={selectedFlow}
highlight={highlight} highlight={highlight}
onSelect={flow => this.props.selectFlow(flow.id)} onSelect={this.props.selectFlow}
/> />
{selectedFlow && [ {selectedFlow && [
<Splitter key="splitter"/>, <Splitter key="splitter"/>,

View File

@ -1,7 +1,9 @@
import _ from "lodash"; import _ from 'lodash'
import React from 'react'
import shallowEqual from 'shallowequal'
window._ = _; window._ = _;
window.React = require("react"); window.React = React;
export var Key = { export var Key = {
UP: 38, UP: 38,
@ -105,3 +107,16 @@ fetchApi.put = (url, json, options) => fetchApi(
...options ...options
} }
) )
export const pure = renderFn => class extends React.Component {
static displayName = renderFn.name
shouldComponentUpdate(nextProps) {
console.log(!shallowEqual(this.props, nextProps))
return !shallowEqual(this.props, nextProps)
}
render() {
return renderFn(this.props)
}
}