Я только что наткнулся на вопрос о действиях React при настройке значений по умолчанию в одном из моих безстоящих функциональных компонентов.
У этого компонента был defaultProps
, который определил row: false
, но мне это не понравилось, потому что defaultProps
в конце файла, что на самом деле затрудняет просмотр, И, таким образом, мы не знаем свойства по умолчанию. Поэтому я переместил его в объявление функции напрямую и назначил его с использованием значения по умолчанию для параметров ES6.
const FormField = ({
row = false,
...others,
}) => {
// logic...
};
Но потом мы спорили с коллегой об этом , являющемся хорошей идеей или не. Потому что это может показаться тривиальным, но может также сильно повлиять на производительность, поскольку реакция не знает значения по умолчанию.
Я считаю, что в этом случае это тривиально. Поскольку он является логическим, а не объектом/массивом и поэтому не будет рассматриваться как другое значение во время согласования.
Но теперь посмотрим более продвинутый прецедент:
const FormField = ({
input: { name, value, ...inputRest },
label = capitalize(name),
placeholder = label,
row = false,
meta: { touched, error, warning },
...others,
}) => {
// logic...
};
Здесь я устанавливаю значение placeholder
из label
, которое само основано на input.name
. Использование деструкции ES6 со значениями по умолчанию для параметров делает все это очень легко писать/понимать и работает как шарм.
Но это хорошая идея? А если нет, тогда как бы вы сделали это правильно?