#javascript #reactjs #templates #mustache
#javascript #reactjs #шаблоны #усы
Вопрос:
Целью проекта является отображение панелей, которые можно настраивать в серверной части, и поэтому мы получаем шаблон и данные панелей из серверного API, компоненты на стороне клиента не предопределены, и я должен отображать содержимое путем объединения шаблона json и json данных, которые извлекаются изAPI, который я сейчас использую MustacheJS
, и react-mustache-template-component
для достижения этого. Я могу легко создавать списки и простые компоненты.
Но проблема возникает при создании компонентов с интерактивностью, а не простых списков, а графиков, диаграмм и каруселей с возможностью прокрутки; И шаблоны Mustache не помогают мне достичь этого, более того, поскольку я использую пакет react-mustache-template, я могу использовать только чистые HTML-элементы в своих шаблонах, пользовательских компонентах React или библиотекекомпоненты не работают, как мне решить эту проблему?
Или есть другой способ подойти к этой проблеме, дизайн шаблонов еще не исправлен, и я выбрал Mustache, потому что он удовлетворил мой первоначальный вариант использования, но теперь панели становятся более интерактивными. Есть ли другой способ решения этой проблемы?
Ответ №1:
- Если все графики, диаграммы и карусели выглядят одинаково: я бы просто записал код.
- Если нет, я бы определил указать некоторую структуру json, которая определяет, что с чем делать. Пример отображения предупреждения при нажатии кнопки:
[
{
"identifier": "#button",
"action": {
"name": "click",
"handler": {
"type": "alert",
"content": "clicked me!"
}
}
}
]
В последних случаях существует функция eval, но ее использование настоятельно не рекомендуется.
Комментарии:
1. И как бы вы отобразили это во внешнем интерфейсе?
2. Просто чтобы уточнить, я намеревался написать только несколько предопределенных функций, извлеките некоторые. файл json, чтобы знать, где привязывать и какую функцию запускать. Может быть, вы могли бы сделать что-то более причудливое, например, принять массив обработчиков или принять действие. name = «проведите пальцем» и делайте все, что хотите.