2016-09-06 2 views
1

Я разрабатываю приложение rails с помощью turbolinks, и я пытаюсь заставить виджет Smooch работать вместе с turbolinks.Использование виджета Smooch с turbolinks

Проблема заключается в том, что turbolinks заменяет тело страницы при каждой загрузке страницы, виджет, который я инициализировал, удаляется со страницы.

Я попытался с помощью встроенного режима и настройки data-turbolinks-permanent как это:

Smooch.init({ appToken: token, embedded: true }); 
Smooch.render(document.getElementById('smooch-container')); 

<div id='smooch-container' data-turbolinks-permanent></div> 

Но мне кажется, что обниматься даже не вставить виджет внутри этого контейнера:

<div id="smooch-container" data-turbolinks-permanent=""></div> 
<div id="sk-holder">...</div> 

Как я могу использовать компоненты, которые мне нужны, чтобы упорствовать в загрузке страниц с помощью turbolinks?

+0

Веб-виджет Smooch работает на React, который, я думаю, может быть запутан турболинками .. поэтому я подозреваю, что это не сработает без каких-либо усилий. Быстрый поиск в Google: https://github.com/ssorallen/turbo-react вы могли бы попробовать. –

+0

Интересно, я посмотрю на это. Мне действительно удалось создать постоянный компонент smooch, мне пришлось запустить рендеринг внутри обратного вызова загрузки домена. Тем не менее, при использовании встроенного режима нет стиля, и нет возможности переключения, поэтому я, возможно, просто воссоздаю стиль с помощью реагирующего компонента. –

ответ

0

То, что я должен был использовать приватную переменную _container где визуализируется Реагировать компонент:

$(document).on('turbolinks:before-cache', function() { 
    Smooch._container && $(Smooch._container).detach(); 
}); 

$(document).on('turbolinks:render', function() { 
    Smooch._container && $('body').append(Smooch._container); 
}); 

Мы добавляем компонент в DOM, когда новая страница загружается.

Анимации не будут работать должным образом, поэтому мне пришлось перезаписать анимацию CSS и использовать opacity, чтобы показать/скрыть компонент.

Смежные вопросы