Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
const Link =({className, ...props}) => {
return (
<a {...props} className={className + ' link'} />
)
}
А можно вообще забыть про className и юзать styled-components.
Статья, все таки, не про стили и классы, а про подходы.
1. Разработчик, использующий наш компонент, должен иметь возможность переопределить значение пропа по умолчанию
3. Разработчик должен иметь возможность добавлять значения, при этом сохраняя значение по умолчанию
2. Мы не хотим позволять разработчику менять некоторые пропсы
для этого можно использовать деструктуризацию из моего кода выше
зачем вообще тогда принимать такие пропсы снаружи?
Если честно, не знаю, возможно что бы явно показать разработчику что значение уже задано и выдавать ошибку если он попытается что-то изменить, то есть грабли подписаны и лежат намеренно.
Эм, если что, это перевод.
К теме не относится, но в последнем примере неправильно используется setState.В данном случае, было бы правильнее передавать в setState функцию, в которую прокидывается текущее значение state, а вторым параметром передавать callback, который гарантированно выполниться только после изменения state.
this.setState(
state => {
const enabled = !state.enabled;
return { enabled };
},
() => console.log(this.state.enabled)
);В вашем примере на момент выполнения onClick значение state может быть еще не изменено.
Спасибо за статью!
Пишем API для React компонентов, часть 3: порядок пропсов важен