From 0892a84131d9d1db2a621c11162b1805d932d14d Mon Sep 17 00:00:00 2001 From: yarastqt Date: Wed, 14 Aug 2019 19:19:52 +0300 Subject: [PATCH 1/2] perf(classnames): use arguments instead spread --- packages/classnames/classnames.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/classnames/classnames.tsx b/packages/classnames/classnames.tsx index 32207789..1dc03b64 100644 --- a/packages/classnames/classnames.tsx +++ b/packages/classnames/classnames.tsx @@ -11,13 +11,15 @@ * * @param strings classNames strings */ -export function classnames(...strings: Array) { +export function classnames(...strings: Array): string; +export function classnames() { let className = ''; const uniqueCache = new Set(); - const classNameList = strings.join(' ').split(' '); + // Use arguments instead rest operator for better performance. + const classNameList: Array = [].slice.call(arguments); for (const value of classNameList) { - if (value === '' || uniqueCache.has(value)) { + if (value === '' || value === undefined || uniqueCache.has(value)) { continue; } From a5a644e7fc2dec363101e23c23e0ceb7eca89dd4 Mon Sep 17 00:00:00 2001 From: yarastqt Date: Wed, 14 Aug 2019 21:03:49 +0300 Subject: [PATCH 2/2] style(classnames): wrap to block if statement --- packages/classnames/classnames.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/classnames/classnames.tsx b/packages/classnames/classnames.tsx index 1dc03b64..18db0a77 100644 --- a/packages/classnames/classnames.tsx +++ b/packages/classnames/classnames.tsx @@ -24,7 +24,11 @@ export function classnames() { } uniqueCache.add(value); - if (className.length > 0) className += ' '; + + if (className.length > 0) { + className += ' '; + } + className += value; }