Summary: My benchmarks have shown react-emotion to be faster than the current implementation of `styled`. For this reason, I am converting all styling to [emotion](https://emotion.sh). Benchmark results: {F136839093} The syntax is very similar between the two libraries. The main difference is that emotion only allows a single function for the whole style attribute, whereas the old implementation had functions for every style-attirbute. Before: ``` { color: props => props.color, fontSize: props => props.size, } ``` After: ``` props => ({ color: props.color, fontSize: props.size, }) ``` Reviewed By: jknoxville Differential Revision: D9479893 fbshipit-source-id: 2c39e4618f7e52ceacb67bbec8ae26114025723f
37 lines
815 B
JavaScript
37 lines
815 B
JavaScript
/**
|
|
* Copyright 2018-present Facebook.
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
* @format
|
|
*/
|
|
|
|
import {PureComponent} from 'react';
|
|
import styled from '../styled/index.js';
|
|
|
|
type CheckboxProps = {
|
|
checked: boolean,
|
|
onChange: (checked: boolean) => void,
|
|
};
|
|
|
|
const CheckboxContainer = styled('input')({
|
|
display: 'inline-block',
|
|
marginRight: 5,
|
|
verticalAlign: 'middle',
|
|
});
|
|
|
|
export default class Checkbox extends PureComponent<CheckboxProps> {
|
|
onChange = (e: SyntheticInputEvent<HTMLInputElement>) => {
|
|
this.props.onChange(e.target.checked);
|
|
};
|
|
|
|
render() {
|
|
return (
|
|
<CheckboxContainer
|
|
type="checkbox"
|
|
checked={this.props.checked}
|
|
onChange={this.onChange}
|
|
/>
|
|
);
|
|
}
|
|
}
|