#reactjs #tinymce #underscore.js #underscore.js-templating #tinymce-5
Вопрос:
Я использую подчеркивание, реакцию и TinyMCE для одной из своих игр.
Часть управления игрой имеет экран редактирования с несколькими текстовыми полями TinyMCE, поэтому мне нужен этот динамически сгенерированный идентификатор.
Вот почему в шаблоне я использую текстовые области с динамически генерируемыми идентификаторами, такими как этот:
<textarea id="{{'game_' g.id}}" class="gameDesc">
</textarea>
что должно привести к текстовой области, подобной этой:
<textarea id="game_7" class="gameDesc"></textarea>
А затем я использую его, чтобы установить значение моего селектора в моем компоненте TinyMCE следующим образом:
return (
<Editor
initialValue={gameDesc}
init={{
selector: 'textarea#game_' gameId,
height: 500,
plugins: [
'advlist autolink lists link image charmap print preview anchor'
],
toolbar: 'undo redo | bold italic underline strikethrough | fontselect fontsizeselect formatselect |
}}
value={contentEditor}
onEditorChange={handleEditorChange}
/>
)
Но всякий раз, когда я запускаю его, я вижу, что каким-то образом идентификатор моей текстовой области изменяется вот так:
<textarea id="tiny-react_75536734221618409165824" />
Я понятия не имею, где и как это происходит.
Просто чтобы убедиться, я добавил тестовую строку, подобную этой:
<div id="{{'game_' g.id}}">TESTING</div>
И он действительно правильно отображается вот так:
<div="game_7">TESTING</div>
Так что я не совсем понимаю, что происходит.
Кто-нибудь когда-нибудь сталкивался с подобной проблемой?
Спасибо!
Ответ №1:
Предполагая, что вы используете компонент TinyMCE React, существует параметр, который вы можете передать <Editor>
тегу для установки id
:
https://www.tiny.cloud/docs/integrations/react/#id
Идентификатор редактора. Используется для извлечения экземпляра редактора с помощью метода tinymce.get(«ИДЕНТИФИКАТОР»). По умолчанию используется автоматически сгенерированный UUID.
Комментарии:
1. Спасибо. Я использую компонент TinyMCE React, и я визуализирую его следующим образом:
this.renderComponent(tinyMCEeditor, { game: this.model.attributes }, '.gameArea');
Итак, в примере , который они показываютid=uuid
, я могу просто сделатьid=gameId
? еще раз спасибо!2. Чтобы ответить на ваш комментарий-да, поскольку это происходит в JavaScript так же, как ваш код селектора динамически создает селектор.
3. Поэтому я попробовал,
return ( <Editor id='gameId'
но он просто генерирует текстовую область, подобную этой,<textarea id="gameId"
4. Я должен был сделать это вот так:
id={gameId.toString()}