Skip to content

Commit 0a709ac

Browse files
tmp
1 parent edad27b commit 0a709ac

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

lib/react_on_rails/helper.rb

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,14 @@ def stream_react_component(component_name, options = {})
150150
end
151151

152152
def rsc_react_component(component_name, options = {})
153-
res = internal_rsc_react_component(component_name, options)
154-
s = ""
155-
res.each_chunk do |chunk|
156-
s += chunk
153+
rendering_fiber = Fiber.new do
154+
res = internal_rsc_react_component(component_name, options)
155+
res.each_chunk do |chunk|
156+
Fiber.yield chunk
157+
end
158+
Fiber.yield nil
157159
end
158-
s
160+
rendering_fiber
159161
end
160162

161163
# react_component_hash is used to return multiple HTML strings for server rendering, such as for
@@ -384,13 +386,14 @@ def load_pack_for_generated_component(react_component_name, render_options)
384386
return unless render_options.auto_load_bundle
385387

386388
ReactOnRails::PackerUtils.raise_nested_entries_disabled unless ReactOnRails::PackerUtils.nested_entries?
387-
if Rails.env.development?
388-
is_component_pack_present = File.exist?(generated_components_pack_path(react_component_name))
389-
raise_missing_autoloaded_bundle(react_component_name) unless is_component_pack_present
390-
end
391-
append_javascript_pack_tag("generated/#{react_component_name}",
392-
defer: ReactOnRails.configuration.defer_generated_component_packs)
393-
append_stylesheet_pack_tag("generated/#{react_component_name}")
389+
append_javascript_pack_tag("client-bundle")
390+
# if Rails.env.development?
391+
# is_component_pack_present = File.exist?(generated_components_pack_path(react_component_name))
392+
# raise_missing_autoloaded_bundle(react_component_name) unless is_component_pack_present
393+
# end
394+
# append_javascript_pack_tag("generated/#{react_component_name}",
395+
# defer: ReactOnRails.configuration.defer_generated_component_packs)
396+
# append_stylesheet_pack_tag("generated/#{react_component_name}")
394397
end
395398

396399
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity

node_package/src/ReactOnRailsRSC.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import type { ReactElement } from 'react';
22
// @ts-expect-error will define this module types later
33
import { renderToReadableStream } from 'react-server-dom-webpack/server.edge';
44
import { PassThrough } from 'stream';
5+
import fs from 'fs';
56

67
import { RenderParams } from './types';
78
import ComponentRegistry from './ComponentRegistry';
89
import createReactOutput from './createReactOutput';
910
import { isPromise, isServerRenderHash } from './isServerRenderResult';
10-
import handleError from './handleError';
1111
import ReactOnRails from './ReactOnRails';
1212

1313
(async () => {
@@ -26,6 +26,16 @@ const stringToStream = (str: string) => {
2626
return stream;
2727
};
2828

29+
const getBundleConfig = () => {
30+
const bundleConfig = JSON.parse(fs.readFileSync('./public/webpack/development/react-client-manifest.json', 'utf8'));
31+
// remove file:// from keys
32+
const newBundleConfig: { [key: string]: any } = {};
33+
for (const [key, value] of Object.entries(bundleConfig)) {
34+
newBundleConfig[key.replace('file://', '')] = value;
35+
}
36+
return newBundleConfig;
37+
}
38+
2939
ReactOnRails.serverRenderRSCReactComponent = (options: RenderParams) => {
3040
const { name, domNodeId, trace, props, railsContext, throwJsErrors } = options;
3141

@@ -52,7 +62,7 @@ See https://github.com/shakacode/react_on_rails#renderer-functions`);
5262
}
5363

5464
renderResult = new PassThrough();
55-
const streamReader = renderToReadableStream(reactRenderingResult as ReactElement).getReader();
65+
const streamReader = renderToReadableStream(reactRenderingResult, getBundleConfig()).getReader();
5666
const processStream = async () => {
5767
const { done, value } = await streamReader.read();
5868
if (done) {

0 commit comments

Comments
 (0)