есть hoc withUser, который прокидывает два пропса: объект user и функцию updateUser
Я пишу компонент:
function UserButton({ user, ...htmlProps }) {
return <button style={{ color: getFavColor(user) }} {...htmlProps}>hello, world</button>
}
export default withUser(UserButton);
Кто-нибудь уже видит проблему? Проблема в том, что в ...htmlProps по-любому попадёт ненужный проп updateUser, которому на хтмл-элементе делать нечего.
К сожалению, рекомпоузом эту проблему никак не решить. Вот такая попытка приведёт нас к новой проблеме:
export default comspose(
withUser,
mapProps(props => ({ user: props.user }),
)(UserButton);
Проблема в том, что теперь в ...htmlProps не попадут вообще никакие дополнительно прокинутые пропсы
Решение я вижу только одно, уродливое — написать некую omit функцию, которая будет знать про все возможные хтмл-пропсы. Но это отвратительно
Единственное другое решение это знать о том, какие именно пропсы даёт withUser. Но в этом блин и проблема — мы этого не знаем и с ХОКами эту информацию легко не получить
не фильтруй пропсы, просто строй расширение и все вроде ок
вот с рендер-пропсами такой проблемы нет
Не надо прокидывать в компонент то, что не надо прокидывать в компонент
Вот тебе omit ```mapProps(({ updateUser, ...rest }) => rest```
Обсуждают сегодня