Skip to content
This repository has been archived by the owner on Nov 10, 2022. It is now read-only.

Hw emoji #11

Closed
wants to merge 15 commits into from
Closed

Hw emoji #11

wants to merge 15 commits into from

Conversation

alekseik1
Copy link
Owner

@alekseik1 alekseik1 commented Mar 25, 2019

Сделал форму из CSS-спрайта (действительно CSS спрайта: картинка одна, но нарезается внутри CSS через width и height). Хотел сделать вставку смайлика в форму, но это оказалось весьма нетривиально.
Нужно переписать <input> на <div> + аккуратно передавать смайл при сообщении. Если с первым я смог справиться, то второе никак не получается: у меня все CSS свойства находятся в :local(.....) -- а это значит, что они видны только в пределах одного React-компонента (возможно, я тут не прав и они видны всюду. Пни меня, если это так). Вдобавок, даже если я смогу передать CSS-свойства каждого смайла, все равно не знаю, как сделать отрисовку React-компонента внутри div. Нужно получить что-то вроде такого: <div class="input-form" contenteditable=1>Мое классное сообщение <a {сюда надо как-то прописать CSS-бэкграунд смайлика} /> </div>. Вот этот <a ... /> надо передать внутрь, но решения в интернете говорят использовать dangerouslySetInnerHTML, что намекает на плохой код.

TL; DR я не знаю, как сделать адекватно вставку смайла при клике, поэтому пока этот пункт не сделан.
@martinkomitsky, можешь дать наводку, если этот пункт обязателен в задании, пожалуйста?

@alekseik1 alekseik1 self-assigned this Mar 25, 2019
Copy link
Collaborator

@martinkomitsky martinkomitsky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Для начала надо докоммитить что то, чего не хватает для сборки.

  • dangerouslySetInnerHTML - для решения задачи ДЗ подойдет
  • у меня все CSS свойства находятся в :local(.....) -- а это значит, что они видны только в пределах одного React-компонента - используй import styles from 'component.css'; и далее className={styles.CLASSNAME}. Вообще, если один и тот же класс у тебя используется вне компонента, то это неправильно.
  • если этот пункт обязателен в задании - пункт про contenteditable - это бонус. Достаточно при клике на смайл вставлять в поле ввода его "код"

Copy link
Collaborator

@martinkomitsky martinkomitsky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Осталось немного: тут 2 ошибки.
image

  • Первая про то, что нельзя использовать функции как реакт элементы
  • Вторая - забыл проставить уникальный key для каждого элемента, когда делаешь .map(). Это позволяет реакту быстрее перерисовывать ноды

}

.oh {
background: url('../../../sprites/emoji.png') no-repeat -54px -126px;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В условии дз есть ссылка на sprite-loader. Не понимаю, почему все это игнорируют. Вручную ничего прописывать не надо, надо добавить этот лоадер и собрать картинки из архива.


const Emoji = ({emojiName, onClick }) => {
return <img
contentEditable={false}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

не совсем понятно, зачем это для иконки :)

@alekseik1 alekseik1 requested a review from martinkomitsky April 4, 2019 08:07
@martinkomitsky
Copy link
Collaborator

Очень жду спрайт лоадер и следующие дз! @alekseik1

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants