在 应对 </跨度> JSX它似乎不可能做这样的事情:
render:function(){ 回来( &lt; {this.props.component.slug} className =‘text’&gt; {this.props.component.value’ } &LT; / {this.props.component.slug}&GT; );}
我得到一个解析错误:意外的令牌{。这不是什么 应对 </跨度> 可以处理?
我正在设计这个组件,以便在引擎盖下,“
的 编辑 强> :也许你忘了添加 /** @jsx React.DOM */ 在js的开头?
/** @jsx React.DOM */
您可以使用 React.DOM 虽然:
React.DOM
render: function() { return React.DOM[this.props.component.slug](null, this.props.component.value); }
http://jsbin.com/rerehutena/2/edit?html,js,output
我不是React专家,但我认为每个组件都应该在开头用一个特定的标签构建。因此,它本身可以提供一个明确的目的。
如果你打算注入渲染的实际组件,你可以做这样的事情,这对于测试非常方便,或者你想要动态注入要渲染的组件的任何原因。
var MyComponentF=function(ChildComponent){ var MyComponent = React.createClass({ getInitialState: function () { return { }; }, componentDidMount: function () { }, render: function () { return ( <div className="MyComponent"> <ChildComponent></ChildComponent> </div> ); } }); return MyComponent; }; var OtherComponentF=function(){ var OtherComponent = React.createClass({ getInitialState: function () { return { }; }, componentDidMount: function () { }, render: function () { return ( <div className="OtherComponent"> OtherComponent </div> ); } }); return OtherComponent; }; var AnotherComponentF=function(){ var AnotherComponent = React.createClass({ getInitialState: function () { return { }; }, componentDidMount: function () { }, render: function () { return ( <div className="AnotherComponent"> AnotherComponent </div> ); } }); return AnotherComponent; }; $(document).ready(function () { var appComponent = MyComponentF(OtherComponentF()); // OR var appComponent = MyComponentF(AnotherComponentF()); // Results will differ depending on injected component. ReactDOM.render(React.createElement(appComponent), document.getElementById("app-container")); });
你不应该将组件slug放在花括号中:
var Hello = React.createClass({ render: function() { return <this.props.component.slug className='text'> {this.props.component.value} </this.props.component.slug>; } }); React.renderComponent(<Hello component={{slug:React.DOM.div, value:'This is my header'}} />, document.body);
这是一个工作小提琴: http://jsfiddle.net/kb3gN/6668/
此外,您可以找到JSX Compiler有助于调试这些错误: http://facebook.github.io/react/jsx-compiler.html