Skip to content

Commit 68db515

Browse files
committed
Merge branch 'master' into update-react
2 parents 02c849b + 487b111 commit 68db515

File tree

11 files changed

+62
-1
lines changed

11 files changed

+62
-1
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,15 @@ Component File Name | `react_component` call
127127
`app/javascript/components/SampleComponent.js` | `react_component("SampleComponent")`
128128
`app/javascript/components/SampleComponent.js.jsx` | Has to be renamed to SampleComponent.jsx, then use `react_component("SampleComponent")`
129129

130+
### Typescript support
131+
132+
If you want to use React-Rails with Typescript, simply run the installer and add @types:
133+
```
134+
$ bundle exec rails webpacker:install:typescript
135+
$ yarn add @types/react @types/react-dom
136+
```
137+
138+
Doing this will allow React-Rails to support the .tsx extension.
130139

131140
## Use with Asset Pipeline
132141

lib/react/rails/controller_renderer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def initialize(options={})
2828
# @return [String] HTML for `component_name` with `options[:props]`
2929
def call(component_name, options, &block)
3030
props = options.fetch(:props, {})
31-
options = default_options.merge(options.slice(:data, :aria, :tag, :class, :id, :prerender))
31+
options = default_options.merge(options.slice(:data, :aria, :tag, :class, :id, :prerender, :camelize_props))
3232
react_component(component_name, props, options, &block)
3333
end
3434

test/dummy_sprockets/app/controllers/server_controller.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ def inline_component_prerender_false
1616
render(component_options.merge(prerender: false))
1717
end
1818

19+
def inline_component_with_camelize_props_prerender_true
20+
render component: 'TodoList', props: { test_camelize_props: true, todos: ['dummy'] }, camelize_props: true
21+
end
22+
23+
def inline_component_with_camelize_props_prerender_false
24+
render component: 'TodoList', props: { test_camelize_props: true, todos: ['dummy'] }, camelize_props: true, prerender: false
25+
end
26+
1927
private
2028

2129
def component_options

test/dummy_sprockets/config/routes.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
get :console_example
77
get :inline_component_prerender_true
88
get :inline_component_prerender_false
9+
get :inline_component_with_camelize_props_prerender_true
10+
get :inline_component_with_camelize_props_prerender_false
911
end
1012
end
1113

test/dummy_webpacker1/app/controllers/server_controller.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ def inline_component_prerender_false
1616
render(component_options.merge(prerender: false))
1717
end
1818

19+
def inline_component_with_camelize_props_prerender_true
20+
render component: 'TodoList', props: { test_camelize_props: true, todos: ['dummy'] }, camelize_props: true
21+
end
22+
23+
def inline_component_with_camelize_props_prerender_false
24+
render component: 'TodoList', props: { test_camelize_props: true, todos: ['dummy'] }, camelize_props: true, prerender: false
25+
end
26+
1927
private
2028

2129
def component_options

test/dummy_webpacker1/config/routes.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
get :console_example
66
get :inline_component_prerender_true
77
get :inline_component_prerender_false
8+
get :inline_component_with_camelize_props_prerender_true
9+
get :inline_component_with_camelize_props_prerender_false
810
end
911
end
1012

test/dummy_webpacker2/app/controllers/server_controller.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ def inline_component_prerender_false
1616
render(component_options.merge(prerender: false))
1717
end
1818

19+
def inline_component_with_camelize_props_prerender_true
20+
render component: 'TodoList', props: { test_camelize_props: true, todos: ['dummy'] }, camelize_props: true
21+
end
22+
23+
def inline_component_with_camelize_props_prerender_false
24+
render component: 'TodoList', props: { test_camelize_props: true, todos: ['dummy'] }, camelize_props: true, prerender: false
25+
end
26+
1927
private
2028

2129
def component_options

test/dummy_webpacker2/config/routes.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
get :console_example
66
get :inline_component_prerender_true
77
get :inline_component_prerender_false
8+
get :inline_component_with_camelize_props_prerender_true
9+
get :inline_component_with_camelize_props_prerender_false
810
end
911
end
1012

test/dummy_webpacker3/app/controllers/server_controller.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ def inline_component_prerender_false
1616
render(component_options.merge(prerender: false))
1717
end
1818

19+
def inline_component_with_camelize_props_prerender_true
20+
render component: 'TodoList', props: { test_camelize_props: true, todos: ['dummy'] }, camelize_props: true
21+
end
22+
23+
def inline_component_with_camelize_props_prerender_false
24+
render component: 'TodoList', props: { test_camelize_props: true, todos: ['dummy'] }, camelize_props: true, prerender: false
25+
end
26+
1927
private
2028

2129
def component_options

test/dummy_webpacker3/config/routes.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
get :console_example
66
get :inline_component_prerender_true
77
get :inline_component_prerender_false
8+
get :inline_component_with_camelize_props_prerender_true
9+
get :inline_component_with_camelize_props_prerender_false
810
end
911
end
1012

0 commit comments

Comments
 (0)