Skip to content

Commit 106d66b

Browse files
committed
Use React element factory to instantiate component. Closes #46
1 parent 656c0ce commit 106d66b

File tree

6 files changed

+20
-8
lines changed

6 files changed

+20
-8
lines changed

src/React.Sample.Mvc4/Content/Sample.jsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99

1010
var CommentsBox = React.createClass({
1111
propTypes: {
12-
initialComments: React.PropTypes.array.isRequired,
13-
commentsPerPage: React.PropTypes.number.isRequired
12+
initialComments: React.PropTypes.array.isRequired
1413
},
1514
getInitialState() {
1615
return {

src/React.Sample.Mvc4/Views/Home/Index.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
@Html.React("CommentsBox", new { initialComments = Model.Comments })
1818

1919
<!-- Load all required scripts (React + the site's scripts) -->
20-
<script src="http://fb.me/react-0.12.0.min.js"></script>
20+
<script src="http://fb.me/react-0.12.0.js"></script>
2121
@Scripts.Render("~/bundles/main")
2222
<!-- Render the code to initialise the component -->
2323
@Html.ReactInitJavaScript()

src/React.Tests/Core/ReactComponentTest.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ public void RenderHtmlShouldCallRenderComponent()
4242
};
4343
component.RenderHtml();
4444

45-
environment.Verify(x => x.Execute<string>(@"React.renderToString(Foo({""hello"":""World""}))"));
45+
environment.Verify(x => x.Execute<string>(@"React.renderToString(React.createElement(Foo, {""hello"":""World""}))"));
4646
}
4747

4848
[Test]
4949
public void RenderHtmlShouldWrapComponentInDiv()
5050
{
5151
var environment = new Mock<IReactEnvironment>();
5252
environment.Setup(x => x.Execute<bool>("typeof Foo !== 'undefined'")).Returns(true);
53-
environment.Setup(x => x.Execute<string>(@"React.renderToString(Foo({""hello"":""World""}))"))
53+
environment.Setup(x => x.Execute<string>(@"React.renderToString(React.createElement(Foo, {""hello"":""World""}))"))
5454
.Returns("[HTML]");
5555
var config = new Mock<IReactSiteConfiguration>();
5656

@@ -69,7 +69,7 @@ public void RenderHtmlShouldWrapComponentInCustomElement()
6969
var config = new Mock<IReactSiteConfiguration>();
7070
var environment = new Mock<IReactEnvironment>();
7171
environment.Setup(x => x.Execute<bool>("typeof Foo !== 'undefined'")).Returns(true);
72-
environment.Setup(x => x.Execute<string>(@"React.renderToString(Foo({""hello"":""World""}))"))
72+
environment.Setup(x => x.Execute<string>(@"React.renderToString(React.createElement(Foo, {""hello"":""World""}))"))
7373
.Returns("[HTML]");
7474

7575
var component = new ReactComponent(environment.Object, config.Object, "Foo", "container")
@@ -95,7 +95,7 @@ public void RenderJavaScriptShouldCallRenderComponent()
9595
var result = component.RenderJavaScript();
9696

9797
Assert.AreEqual(
98-
@"React.render(Foo({""hello"":""World""}), document.getElementById(""container""))",
98+
@"React.render(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))",
9999
result
100100
);
101101
}

src/React/IReactEnvironment.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ public interface IReactEnvironment
2727
/// </summary>
2828
string Version { get; }
2929

30+
/// <summary>
31+
/// Gets the name and version of the JavaScript engine in use by ReactJS.NET
32+
/// </summary>
33+
string EngineVersion { get; }
34+
3035
/// <summary>
3136
/// Executes the provided JavaScript code.
3237
/// </summary>

src/React/ReactComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ private string GetComponentInitialiser()
148148
{
149149
var encodedProps = JsonConvert.SerializeObject(Props, _configuration.JsonSerializerSettings); // SerializeObject accepts null settings
150150
return string.Format(
151-
"{0}({1})",
151+
"React.createElement({0}, {1})",
152152
ComponentName,
153153
encodedProps
154154
);

src/React/ReactEnvironment.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,14 @@ public bool EngineSupportsJsxTransformer
131131
get { return Engine.SupportsJsxTransformer(); }
132132
}
133133

134+
/// <summary>
135+
/// Gets the version of the JavaScript engine in use by ReactJS.NET
136+
/// </summary>
137+
public string EngineVersion
138+
{
139+
get { return Engine.Name + " " + Engine.Version; }
140+
}
141+
134142
/// <summary>
135143
/// Gets the version number of ReactJS.NET
136144
/// </summary>

0 commit comments

Comments
 (0)