Давайте рассмотрим пример: вы обрабатываете свои быстрые ответы в массиве.
state = {
quickReplies: ['Reply 1', 'Reply 2', 'Reply 3', 'Reply 4'],
};
Вы можете отобразить их как:
{this.state.quickReplies.map(reply =>
<TouchableHighlight style={styles.quickReply} onPress={()=>this.onPress(reply)}>
<Text>{reply}</Text>
</TouchableHighlight>
)}
, где функция onPress
может быть:
onPress = (reply) => {
console.log(reply);
}
Также обратите внимание, что <Text>
из реагируют native также принимает опору onPress
. Вы можете легко использовать его, не оборачивая каждый элемент в <TouchableHighlight>
Я начал с этого . Это был год, когда я использовал его, но концепции остались прежними.
Лучшее, что я мог бы предложить вместо того, как это сделать, - это найти уже интегрированный язык и посмотреть, как они это делают Вот реальный совет - не выбирайте тот, у которого имя пакета начинается с org.eclipse
(как у муравейника). Eclipse предоставляет так много поддержки, что гораздо проще увидеть, какой код нужно написать, если он начинается с другого префикса пакета. Попробуйте, например, взглянуть на плагины groovy или scala .
По моему опыту, именно подсвечивание ошибок сделать сложнее всего; Следующим трудным является контент-помощь.
Если вы управляете компилятором или средой исполнения языка, на котором пишете редактор, жизнь станет намного проще, если вы сможете заставить компилятор предоставить вам все данные, которые понадобятся вашей IDE для его представления. пользователь (например, список токенов - для окраски синтаксиса, всплывающих подсказок; помощник по содержимому будет намного лучше, потому что вы не симулируете компилятор, а вместо этого используете реальный; то же самое с подсветкой ошибок).
В среде IDE относительно легко работать только с отображением ошибок, окраски и т. Д.
После того, как вы настроили отображение только для отображения, пример XML-редактора выглядит весьма полезным.
Большинство правил разбиения я нашел менее полезными; Я всегда заканчивал тем, что строил свой собственный - бинарный поиск по списку токенов чрезвычайно полезен.
это сделает жизнь намного проще, если вы сможете заставить компилятор предоставить вам все данные, которые понадобятся вашей IDE для представления пользователю (например, список токенов - для окраски синтаксиса, всплывающих подсказок; помощь по содержимому будет намного лучше, потому что вы ' не фальсифицирует компилятор, а использует реальный, то же самое с подсветкой ошибок).В среде IDE относительно легко работать только с отображением ошибок, окраски и т. Д.
После того, как вы настроили отображение только для отображения, пример XML-редактора выглядит весьма полезным.
Большинство правил разбиения я нашел менее полезными; Я всегда заканчивал тем, что строил свой собственный - бинарный поиск по списку токенов чрезвычайно полезен.
это сделает жизнь намного проще, если вы сможете заставить компилятор предоставить вам все данные, которые понадобятся вашей IDE для представления пользователю (например, список токенов - для окраски синтаксиса, всплывающих подсказок; помощь по содержимому будет намного лучше, потому что вы ' не фальсифицирует компилятор, а использует реальный, то же самое с подсветкой ошибок).В среде IDE относительно легко работать только с отображением ошибок, окраски и т. Д.
После того, как вы настроили отображение только для отображения, пример XML-редактора выглядит весьма полезным.
Большинство правил разбиения я нашел менее полезными; Я всегда заканчивал тем, что строил свой собственный - бинарный поиск по списку токенов чрезвычайно полезен.
но вместо этого используйте реальный; то же самое с подсветкой ошибок).В среде IDE относительно легко работать только с отображением ошибок, окраски и т. Д.
После того, как вы настроили отображение только для отображения, пример XML-редактора выглядит весьма полезным.
Большинство правил разбиения я нашел менее полезными; Я всегда заканчивал тем, что строил свой собственный - бинарный поиск по списку токенов чрезвычайно полезен.
но вместо этого используйте реальный; то же самое с подсветкой ошибок).В среде IDE относительно легко работать только с отображением ошибок, окраски и т. Д.
После того, как вы настроили отображение только для отображения, пример XML-редактора выглядит весьма полезным.
Большинство правил разбиения я нашел менее полезными; Я всегда заканчивал тем, что строил свой собственный - бинарный поиск по списку токенов чрезвычайно полезен.
Лучшая, которую я видел для стандартного текстового редактора Eclipse, -
http: // www.ibm.com/developerworks/edu/os-dw-os-ecl-commplgin1.html
( вам нужно зарегистрировать бесплатную учетную запись IBM). Прашант Дева, автор действительно хорошего плагина ANTLR2, сделал это.
Возможно, вы захотите взглянуть на инструменты, которые сгенерируют редактор:
Проект моделирования Eclipse (EMF / TMF / GMF)
http: / /www.eclipse.org/modeling/
TMF помогает создавать текстовые редакторы; GMF помогает создавать графические редакторы. Доступна довольно хорошая книга (также о книгах по сафари)
Учебное пособие по адресу: http://wiki.eclipse.org/index.php/GMF_Tutorial
Хорошее введение в GMF: http: //www.ibm.com/developerworks/opensource/library/os-ecl-gmf/
Dynamic Languages Tool Kit
Учебные пособия, доступные на этом сайте , Обратите внимание, что вы можете использовать DLTK для статического редактирования языка; «динамическая» часть происходит из конфигурации и запуска интерпретатора.
Xtext (теперь часть TMF)
Примечание: хороший помощник по контенту может быть довольно трудно; это действительно включает в себя последующий анализ для каждого терминала в вашей грамматике. Вы можете немного упростить его, просто отслеживая определенные символы и ключевые слова и предлагая все, что соответствует существующему префиксу.