Реагируйте с помощью Rails Virtual DOM, объединяющего много узлов - PullRequest
0 голосов
/ 09 января 2019

Я использую Rails с React и реагирующий маршрутизатор, и я сталкиваюсь с проблемой, каждый раз при загрузке представления оно складывается в виртуальный DOM

enter image description here

Вот мое application.js (основной пакет)

document.addEventListener('turbolinks:load', () => {
  const node = document.getElementById('application-content')

  ReactDOM.render(
    <Router>
      <div>
        <Route path="/" exact component={() => require('./main.jsx').default} />
        <Route path="/sign_in" component={() => require('./session.jsx').default} />
        <Route path="/categories" component={() => require('./categories.jsx').default} />
      </div>
    </Router>,
    node
  );

});

1 Ответ

0 голосов
/ 09 января 2019

При переходе на страницу html сохраняются, но вызывается рендер React. И вставляет еще одну копию Router. Поэтому в качестве опции вам нужно переместить рендер в другое место.

Это из турболинкса Readme :

Навигация по турболинкам

Turbolinks перехватывает все клики по ссылкам на тот же домен. Когда вы нажимаете подходящую ссылку, Turbolinks запрещает браузеру переходить по ней. Вместо этого Turbolinks изменяет URL-адрес браузера с помощью API History, запрашивает новую страницу с помощью XMLHttpRequest и затем отображает HTML-ответ.

Во время рендеринга Turbolinks заменяет текущий элемент сразу и объединяет содержимое элемента. Окно JavaScript и объекты документа, а также элемент HTML сохраняются от одного рендеринга к следующему.

...