Skip to content

Commit a0b0cde

Browse files
committed
Pass title prop
1 parent 521c36e commit a0b0cde

7 files changed

Lines changed: 22 additions & 15 deletions

File tree

src/main/java/com/winterbe/react/React.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.winterbe.react;
22

3-
import javax.script.ScriptEngine;
3+
import jdk.nashorn.api.scripting.NashornScriptEngine;
4+
45
import javax.script.ScriptEngineManager;
56
import javax.script.ScriptException;
67
import java.io.InputStream;
@@ -9,11 +10,11 @@
910

1011
public class React {
1112

12-
private ScriptEngine nashorn;
13+
private NashornScriptEngine nashorn;
1314

1415
public React() {
1516
try {
16-
nashorn = new ScriptEngineManager().getEngineByName("nashorn");
17+
nashorn = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn");
1718
nashorn.eval("var window = this;"); // workaround for non-existing window
1819
nashorn.eval("load('https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js')");
1920
nashorn.eval("load('http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js')");
@@ -26,10 +27,12 @@ public React() {
2627
public String renderCommentBox() {
2728
try {
2829
nashorn.eval(readFromClassPath("static/example.js"));
29-
Object html = nashorn.eval(readFromClassPath("static/renderToString.js"));
30+
nashorn.eval(readFromClassPath("static/renderToString.js"));
31+
String title = "Comments (rendered by server)";
32+
Object html = nashorn.invokeFunction("renderCommentBox", title);
3033
return String.valueOf(html);
3134
}
32-
catch (ScriptException e) {
35+
catch (Exception e) {
3336
throw new IllegalStateException("failed to render react component", e);
3437
}
3538
}

src/main/resources/jsx/example.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ var CommentBox = React.createClass({
9292
render: function () {
9393
return (
9494
<div className="commentBox">
95-
<h1>Comments</h1>
95+
<h1>{this.props.title}</h1>
9696
<CommentList data={this.state.data} />
9797
<CommentForm onCommentSubmit={this.handleCommentSubmit} />
9898
</div>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
React.render(
2-
<CommentBox url='comments.json' pollInterval={5000} />,
2+
<CommentBox title='Comments (rendered by client)' url='comments.json' pollInterval={5000} />,
33
document.getElementById("content")
44
);
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
React.renderToString(
2-
<CommentBox url='comments.json' pollInterval={5000} />
3-
);
1+
var renderCommentBox = function (title) {
2+
return React.renderToString(
3+
<CommentBox title={title} url='comments.json' pollInterval={5000} />
4+
);
5+
};

src/main/resources/static/example.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ var CommentBox = React.createClass({displayName: "CommentBox",
9292
render: function () {
9393
return (
9494
React.createElement("div", {className: "commentBox"},
95-
React.createElement("h1", null, "Comments"),
95+
React.createElement("h1", null, this.props.title),
9696
React.createElement(CommentList, {data: this.state.data}),
9797
React.createElement(CommentForm, {onCommentSubmit: this.handleCommentSubmit})
9898
)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
React.render(
2-
React.createElement(CommentBox, {url: "comments.json", pollInterval: 5000}),
2+
React.createElement(CommentBox, {title: "Comments (rendered by client)", url: "comments.json", pollInterval: 5000}),
33
document.getElementById("content")
44
);
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
React.renderToString(
2-
React.createElement(CommentBox, {url: "comments.json", pollInterval: 5000})
3-
);
1+
var renderCommentBox = function (title) {
2+
return React.renderToString(
3+
React.createElement(CommentBox, {title: title, url: "comments.json", pollInterval: 5000})
4+
);
5+
};

0 commit comments

Comments
 (0)