mirror of
https://github.com/zhigang1992/react-native-web.git
synced 2026-05-23 00:03:37 +08:00
Improves StyleSheet benchmark performance by 13x. Removes undocumented `StyleSheet.resolve` API. Typical mean (and first) task duration. [benchmark] DeepTree: depth=3, breadth=10, wrap=4) -master 2809.76ms (3117.64ms) -patch 211.2ms (364.28ms) [benchmark] DeepTree: depth=5, breadth=3, wrap=1) -master 421.25ms (428.15ms) -patch 32.46ms (47.36ms) This patch adds memoization of DOM prop resolution (~3-4x faster), and re-introduces a `className`-based styling strategy (~3-4x faster). Styles map to "atomic css" rules. Fix #307
29 lines
769 B
JavaScript
29 lines
769 B
JavaScript
/* eslint-env jasmine, jest */
|
|
|
|
import createReactDOMStyle from '../createReactDOMStyle';
|
|
|
|
const reactNativeStyle = {
|
|
boxShadow: '1px 1px 1px 1px #000',
|
|
borderWidthLeft: 2,
|
|
borderWidth: 1,
|
|
borderWidthRight: 3,
|
|
display: 'flex',
|
|
marginVertical: 0,
|
|
opacity: 0,
|
|
shadowColor: 'red',
|
|
shadowOffset: { width: 1, height: 2 },
|
|
resizeMode: 'contain'
|
|
};
|
|
|
|
describe('apis/StyleSheet/createReactDOMStyle', () => {
|
|
test('converts ReactNative style to ReactDOM style', () => {
|
|
expect(createReactDOMStyle(reactNativeStyle)).toMatchSnapshot();
|
|
});
|
|
|
|
test('noop on DOM styles', () => {
|
|
const firstStyle = createReactDOMStyle(reactNativeStyle);
|
|
const secondStyle = createReactDOMStyle(firstStyle);
|
|
expect(firstStyle).toEqual(secondStyle);
|
|
});
|
|
});
|