使用其名称反应渲染组件
React render component using its name
我正在试验 React.js,效果非常好。我想知道是否可以像这样将 类 注入其他 类:
var Container = React.createClass({
render: function() {
<{this.props.implComponent}/>
}
});
假设 implComponent 已像这样传递:
React.render(
<Container implComponent="somePredefinedVariable" />,
document.getElementById('content')
);
由于语法错误,这不起作用。我很容易理解为什么。
换句话说,我想根据名称将 类 注入其他 类。这可能吗?我该怎么做?
你很接近。您需要将组件 class 自身传递给它(不是字符串),然后因为标记语法已经采用了一个变量,所以您摆脱了 {}
。也不要忘记 return 来自渲染的节点。
var Container = React.createClass({
render: function() {
return <this.props.implComponent />
}
});
React.render(
<Container implComponent={SomePredefinedVariable} />,
document.getElementById('content')
);
如果您想传递一个基本的 dom 组件,您可以使用字符串
如果您考虑转换结果,这就有意义了
var Container = React.createClass({displayName: "Container",
render: function() {
return React.createElement(this.props.implComponent, null)
}
});
ReactDOM.render(
React.createElement(Container, {implComponent: SomePredefinedVariable}),
document.getElementById('content')
);
ReactDOM.render(
React.createElement(Container, {implComponent: "div"}),
document.getElementById('content')
);
我正在试验 React.js,效果非常好。我想知道是否可以像这样将 类 注入其他 类:
var Container = React.createClass({
render: function() {
<{this.props.implComponent}/>
}
});
假设 implComponent 已像这样传递:
React.render(
<Container implComponent="somePredefinedVariable" />,
document.getElementById('content')
);
由于语法错误,这不起作用。我很容易理解为什么。
换句话说,我想根据名称将 类 注入其他 类。这可能吗?我该怎么做?
你很接近。您需要将组件 class 自身传递给它(不是字符串),然后因为标记语法已经采用了一个变量,所以您摆脱了 {}
。也不要忘记 return 来自渲染的节点。
var Container = React.createClass({
render: function() {
return <this.props.implComponent />
}
});
React.render(
<Container implComponent={SomePredefinedVariable} />,
document.getElementById('content')
);
如果您想传递一个基本的 dom 组件,您可以使用字符串
如果您考虑转换结果,这就有意义了
var Container = React.createClass({displayName: "Container",
render: function() {
return React.createElement(this.props.implComponent, null)
}
});
ReactDOM.render(
React.createElement(Container, {implComponent: SomePredefinedVariable}),
document.getElementById('content')
);
ReactDOM.render(
React.createElement(Container, {implComponent: "div"}),
document.getElementById('content')
);