ReactJS - Uncaught Error: Parse Error: Line 27: Unexpected token
ReactJS - Uncaught Error: Parse Error: Line 27: Unexpected token
我遇到了这个错误
Uncaught Error: Parse Error: Line 27: Unexpected token .
好像不应该有“.” 这个
之后
我该如何解决?
这是我的全部代码
var PageHandler = React.createClass({
getInitialState: function() {
return {
page: ''
};
},
render: function(){
return(
{this.state.page == '' && <MainPage />} // THIS IS LINE 27
);
}
});
var MainPage = React.createClass({
render: function(){
return(
<div className="main-page">
<a href="javascript:void(0);">Open</a>
</div>
);
}
});
这是我的 .html 文件
<script type="text/jsx">
//var PageHandler = React.createElement(PageHandler);
//React.render(PageHandler, document.body);
React.render(<PageHandler />, document.body);
</script>
编辑
现在我发现如果我添加 <div>...</div>
它就起作用了。
render: function(){
return(
<div>
{this.state.page == '' && <MainPage />}
</div>
);
}
为什么会这样?
react 中的 render 方法必须 return 单个父元素。当您考虑将 jsx 编译成什么时,就更容易理解为什么它会遇到困难。 createElement 采用这些参数:
createElement(
string/ReactClass type,
[object props],
[children ...]
)
因此您的 MainPage 将编译为:
return(
React.createElement("div", {className: "main-page"},
React.createElement("a", {href: "javascript:void(0);"}, "Open")
)
很容易看出它创建了一个div
,props只是class的名字,child是一个a
.
但是看着
{this.state.page == '' && <MainPage />}
那会编译成什么?第一个参数是什么?对于要创建的元素,它没有明确的类型。当你将它全部包装在 div 中时,它会编译成这样:
React.createElement("div", null,
this.state.page == '' && React.createElement(MainPage, null), " // THIS IS LINE 27"
)
当然,这可能不是您想要的,但希望它展示了 React 正在尝试做的事情。
我遇到了这个错误
Uncaught Error: Parse Error: Line 27: Unexpected token .
好像不应该有“.” 这个
之后我该如何解决?
这是我的全部代码
var PageHandler = React.createClass({
getInitialState: function() {
return {
page: ''
};
},
render: function(){
return(
{this.state.page == '' && <MainPage />} // THIS IS LINE 27
);
}
});
var MainPage = React.createClass({
render: function(){
return(
<div className="main-page">
<a href="javascript:void(0);">Open</a>
</div>
);
}
});
这是我的 .html 文件
<script type="text/jsx">
//var PageHandler = React.createElement(PageHandler);
//React.render(PageHandler, document.body);
React.render(<PageHandler />, document.body);
</script>
编辑
现在我发现如果我添加 <div>...</div>
它就起作用了。
render: function(){
return(
<div>
{this.state.page == '' && <MainPage />}
</div>
);
}
为什么会这样?
react 中的 render 方法必须 return 单个父元素。当您考虑将 jsx 编译成什么时,就更容易理解为什么它会遇到困难。 createElement 采用这些参数:
createElement(
string/ReactClass type,
[object props],
[children ...]
)
因此您的 MainPage 将编译为:
return(
React.createElement("div", {className: "main-page"},
React.createElement("a", {href: "javascript:void(0);"}, "Open")
)
很容易看出它创建了一个div
,props只是class的名字,child是一个a
.
但是看着
{this.state.page == '' && <MainPage />}
那会编译成什么?第一个参数是什么?对于要创建的元素,它没有明确的类型。当你将它全部包装在 div 中时,它会编译成这样:
React.createElement("div", null,
this.state.page == '' && React.createElement(MainPage, null), " // THIS IS LINE 27"
)
当然,这可能不是您想要的,但希望它展示了 React 正在尝试做的事情。