diff --git a/CHANGELOG.md b/CHANGELOG.md index 24e563929..ad56dc4fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,9 @@ Please follow the recommendations outlined at [keepachangelog.com](http://keepac ### [Unreleased] Changes since last non-beta release. +### Fixed +- Double rendering of components with using Turbo or Turbolinks. Also, updated relevant Typescript definitions. [PR 1421](https://github.com/shakacode/react_on_rails/pull/1421) by [judahmeek](https://github.com/judahmeek). + *Please add entries here for your pull requests that are not yet released.* ### [12.5.2] - 2021-12-29 ### Fixed diff --git a/docs/api/javascript-api.md b/docs/api/javascript-api.md index 8e1699f74..a1b281a86 100644 --- a/docs/api/javascript-api.md +++ b/docs/api/javascript-api.md @@ -61,7 +61,8 @@ The best source of docs is the main [ReactOnRails.js](https://github.com/shakaco /** * Set options for ReactOnRails, typically before you call ReactOnRails.register * Available Options: - * `traceTurbolinks: true|false Gives you debugging messages on Turbolinks events + * `traceTurbolinks: true|false` Gives you debugging messages on Turbolinks events + * `turbo: true|false` enables Turbo, which is not auto-detected like the Turbolinks library is */ setOptions(options) diff --git a/lib/generators/react_on_rails/base_generator.rb b/lib/generators/react_on_rails/base_generator.rb index 9ea2fbe86..fe5647947 100644 --- a/lib/generators/react_on_rails/base_generator.rb +++ b/lib/generators/react_on_rails/base_generator.rb @@ -90,7 +90,7 @@ def add_yarn_dependencies babel-plugin-macros" puts "Adding CSS handlers" - run "yarn add css-loader css-minimizer-webpack-plugin mini-css-extract-plugin style-loader" + run "yarn add css-loader css-minimizer-webpack-plugin mini-css-extract-plugin@2.4.5 style-loader" puts "Adding dev dependencies" run "yarn add -D @pmmmwh/react-refresh-webpack-plugin react-refresh" diff --git a/node_package/src/clientStartup.ts b/node_package/src/clientStartup.ts index 9914814d1..0cd344a5f 100644 --- a/node_package/src/clientStartup.ts +++ b/node_package/src/clientStartup.ts @@ -241,16 +241,16 @@ function renderInit(): void { if (turboInstalled()) { debugTurbolinks( 'USING TURBO: document added event listeners ' + - 'turbo:before-render and turbo:render.'); - document.addEventListener('turbo:before-render', reactOnRailsPageUnloaded); - document.addEventListener('turbo:render', reactOnRailsPageLoaded); + 'turbo:before-visit and turbo:load.'); + document.addEventListener('turbo:before-visit', reactOnRailsPageUnloaded); + document.addEventListener('turbo:load', reactOnRailsPageLoaded); reactOnRailsPageLoaded(); } else if (turbolinksVersion5()) { debugTurbolinks( 'USING TURBOLINKS 5: document added event listeners ' + - 'turbolinks:before-render and turbolinks:render.'); - document.addEventListener('turbolinks:before-render', reactOnRailsPageUnloaded); - document.addEventListener('turbolinks:render', reactOnRailsPageLoaded); + 'turbolinks:before-visit and turbolinks:load.'); + document.addEventListener('turbolinks:before-visit', reactOnRailsPageUnloaded); + document.addEventListener('turbolinks:load', reactOnRailsPageLoaded); reactOnRailsPageLoaded(); } else { debugTurbolinks( diff --git a/node_package/src/types/index.ts b/node_package/src/types/index.ts index 1e8f35f9b..037243c5e 100644 --- a/node_package/src/types/index.ts +++ b/node_package/src/types/index.ts @@ -116,7 +116,7 @@ export interface ReactOnRails { register(components: { [id: string]: ReactComponentOrRenderFunction }): void; registerStore(stores: { [id: string]: Store }): void; getStore(name: string, throwIfMissing: boolean): Store | undefined; - setOptions(newOptions: {traceTurbolinks: boolean}): void; + setOptions(newOptions: {traceTurbolinks?: boolean, turbo?: boolean}): void; reactOnRailsPageLoaded(): void; authenticityToken(): string | null; authenticityHeaders(otherHeaders: { [id: string]: string }): AuthenticityHeaders;