Вступление
Сегодня мы собираемся начать взломать на библиотеке Racteach Facebook. Для этого мы будем создавать простой, но повторно используемый редактор почтовых ящиков, который вы сможете удалить в интерфейс администрирования.
Сам редактор почтовых ящиков станет компонентом rance.js, который позволит нам писать и отформатировать электронную почту. Отправка не будет охвачена в этом руководстве.
Заметки:
- Весь код для этого поста можно найти на Гадость .
- Главной целью состоит в том, чтобы выучить основы RACT.JS, таких как JSX, состояние, реквизиты, обработка событий и дочерние компоненты. TOREVOVER, вы увидите, насколько легко построить многоразовый компонент с Review.js.
- Я также включал jQuery здесь, потому что хочу упростить код нашего редактора почтовых ящиков и сосредоточиться на концепциях основы, но не обязательно реагирует на работу.
Однако, если вы хотите пойти дальше с реагированием, затем подпишитесь на мою рассылку, следуя этой ссылке: ПОДПИСЫВАТЬСЯ!
Вот предварительный просмотр:
Начало работы – Настройка страницы
Первые вещи сначала нам нужно создать HTML-файл для точки входа нашего редактора почтовых ящиков. Создать index.html Файл со следующим контентом, и посмотрим, что идет внутри него:
React MailBox Editor
Здесь мы просто включаем библиотеку React.js ( React.js и React-dom.js ). Все сценарии доступны через CDNJS Отказ
Потому что мы будем использовать JSX для записи нашего компонента, нам нужно включить Бабел ( Browser.min.js ) Перевести его на простой JavaScript. Кроме того, наш код JSX должен быть написан внутри следующего тега скрипта:
Теперь, когда у нас есть эта настройка, давайте создадим наш первый комментарий реагирования. Добавьте следующий код внутри тега скрипта:
var Mailbox = React.createClass({ render: function () { returnHello World!
; } }); var options = {}; var element = React.createElement(Mailbox, options); ReactDOM.render(element, document.querySelector('.container'));
На данный момент наш компонент довольно базовый. Это только оказывает “Hello World!” H1 тег. Откройте свой браузер и посмотрите результат.
Отлично. Теперь давайте начнем строить наш редактор для написания электронных писем.
Редактор почтовых ящиков
Мы реализуем редактор почтовых ящиков как отдельный компонент, но внутри того же файла.
Прежде чем мы ничего определяем, давайте включите внешний плагин, чтобы облегчить нашу реализацию. Мы будем использовать ТРУМБОВЕГ , который является легким редактором WYSIWYG, основанным на jQuery. Установите Trumbowyg с Bower и загрузите jQuery и trumbowyg в верхней части нашего файла index.html.
React MailBox Editor
Затем добавьте следующий код в наш код JSX.
var Editor = React.createClass({ getDefaultProps: function() { return { placeholder: 'Enter your message here...', body: "" }; }, componentDidMount: function () { $('#editor').trumbowyg({ fullscreenable: false }); $('#editor').trumbowyg('html', this.props.body); }, render: function () { return ; } });
Это создает наш класс React.js, который оказывает простому Div. В нашем ComponentDidmount Метод, мы называем Trumbowyg, чтобы преобразовать div в редактор Wysiwyg. Наконец, мы оказываем наш компонент редактора внутри нашего приложения, как следует:
var Mailbox = React.createClass({ render: function () { return; } });
Теперь обновите свой браузер!
Разработать форму
Таким образом, у нас здесь хороший редактор, но это не так здорово, если мы не можем добавить получателей на наши электронные письма. Давайте разработаем форму, чтобы сделать это. Во-первых, мы будем включать Bootstrap в наше приложение через Bower. Обновите следующие строки к нашему файлу index.html.
React MailBox Editor
Форма будет добавлена в приложение внутри нашего основного компонента, почтового ящика, как следует:
var Mailbox = React.createClass({ getInitialState: function () { return { "emailTo": "", "emailCC": "", "emailBCC": "", "emailSubject": "", "emailBody": "" } }, render: function () { return ( ); }, handleEditorChange: function (emailBody) { this.setState({ "emailBody": emailBody }); }, handleEmailToChange: function (e) { this.setState({ "emailTo": e.target.value }); }, handleEmailCCChange: function (e) { this.setState({ "emailCC": e.target.value }); }, handleEmailBCCChange: function (e) { this.setState({ "emailBCC": e.target.value }); }, handleEmailSubjectChange: function (e) { this.setState({ "emailSubject": e.target.value }); } }); var options = { username: "Grégory D'Angelo", link: "https://gdangelo.fr", urlImage: "https://gdangelo.fr/images/avatar.jpg", title: "React Mailbox Editor" }; var element = React.createElement(Mailbox, options); ReactDOM.render(element, document.querySelector('.container'));
Форма содержит все необходимые текстовые поля. Здесь мы используем Bootstrap для ее дизайна.
В нашем Получающийся стадь Метод, мы устанавливаем все поля получателя в пустую строку. Любые изменения в текстовых полях будут вызвать обновление состояния через Onchange Событие и this.setState метод. Futhermore, Onchange Событие было добавлено в наш редактор для хранения в состоянии почтового ящика. Текст, написанный пользователем.
var Editor = React.createClass({ getDefaultProps: function() { ... }, componentDidMount: function () { var that = this; $('#editor').trumbowyg({ fullscreenable: false }) .on('tbwchange', function (){ that.props.onChange($('#editor').trumbowyg('html')); }); $('#editor').trumbowyg('html', this.props.body); }, render: function () { return ; } }); var Mailbox = React.createClass({ ... render: function () { return ( ...... ); }, handleEditorChange: function (emailBody) { this.setState({ "emailBody": emailBody }); }, ... });
Для стиля редактора вашего почтового ящика вы можете добавить следующие стили и загрузить его в файл index.html.
/* -----------------------------------*/ /* -------->>> INDEX.html <<<---------*/ /* -----------------------------------*/ /* General */ body{ background-color: #e9f0f5; } img{ border-radius: 20px; height: 40px; width: 40px; } label{ color: #89949B; } .container{ margin-top: 10px; } .glyphicon{ font-size: 3.5em; } .center{ display: inline-block; float: none; vertical-align: middle; } /* Editor */ .trumbowyg{ border: none; margin: 0; width: 100%; } .trumbowyg-button-pane{ background-color: white; } /* Form Structure */ .panel{ border: none; } .panel .panel-heading{ background-color: white; padding: 20px; } .panel .panel-body{ padding: 0; } .panel .panel-footer{ background-color: white; padding: 20px; } .inbox-title h2{ display: inline-block; padding-left: 12.5px; text-align: left; vertical-align: middle; } .inbox-avatar-name{ display: inline-block; font-size: 1.1em; padding-left: 12.5px; text-align: left; vertical-align: middle; } .inbox-avatar-name a{ color: #ccc; } .form-horizontal{ padding-left: 60px; } .form-control{ border: 2px solid #ccc; border-radius: 0; } /* Buttons */ .btn{ border: 1px solid #ccc; border-radius: 20px; padding: 4px 16px; } .btn-primary{ background-color: #fff; color: #ccc; } .btn-primary.outline{ border-color: #79B0EC; color: #79B0EC; } .btn-primary:hover, .btn-primary:focus{ background-color: #79B0EC; border-color: #79B0EC; color: #fff; } .btn-danger{ background-color: #fff; color: #ccc; } .btn-danger.outline{ border-color: #d9534f; color: #d9534f; } .btn-danger:hover, .btn-danger:focus{ background-color: #d9534f; border-color: #d9534f; color: #fff; } .btn-success{ background-color: #fff; color: #ccc; } .btn-success.outline{ border-color: #55C9A6; color: #55C9A6; } .btn-success:hover, .btn-success:focus{ background-color: #55C9A6; border-color: #55C9A6; color: #fff; }
Теперь проверьте это в браузере.
Сделать это интерактивным
Чтобы имитировать некоторые действия, которые могут произойти в системе Maibox, такими как отправка почты, мы будем включать кнопки. При срабатывании кнопок сохранения и отправки вызывают соответствующие Handleclick * Метод, который открывает модаль для отображения сообщения. Кнопка «Отмена» отбрасывает все изменения в полях редактора и текстовых полей.
var Modal = React.createClass({ render: function () { return (); } }); var Mailbox = React.createClass({ ... render: function () { return ( ...{this.props.title}
{this.props.body}
Кроме того, состояние электронной почты передается с компонента почтового ящика к его компоненту редактора ребенка. Следовательно, через ComponentWillReceiveProps Метод мы можем удалить текст из редактора, когда пользователь нажимает кнопку «Отмена» из компонента почтового ящика.
var Editor = React.createClass({ ... componentWillReceiveProps: function (nextProps) { if (nextProps.body == ""){ $('#editor').trumbowyg('empty'); } }, ... }); var Mailbox = React.createClass({ ... render: function () { return ( ...... ); }, ... });
Заворачивать
Если вы следуете наряду с источником или зданием с нуля, откройте index.html в вашем браузере и играйте с помощью редактора почтовых ящиков.
Не останавливайся там, вилка Github REPO и попробуйте добавить некоторые новые функции в наш редактор почтовых ящиков.
Если вам понравилось это руководство, и вы хотите узнать больше о RECT, а затем подписаться на мою рассылку, следуя этой ссылке: ПОДПИСЫВАТЬСЯ!