动态生成 React 组件名称
Dynamically generate React component names
我找不到解决这个问题的方法。如何将下面的代码转换为更动态和简洁的代码?
OneComponent = require ('./OneComponent')
TwoComponent = require ('./TwoComponent')
ThreeComponent = require ('./ThreeComponent')
Example = React.createClass
render: ->
filter = @props.filterState
if filter is 'something'
tableCmpt =
<div>
<OneComponent
tasks={@props.tasks}
/>
</div>
if filter is 'somethingElse'
tableCmpt =
<div>
<TwoComponent
tasks={@props.tasks}
/>
</div>
##... etc
return tableCmpt
我做过这样的事情。
var Components = {
'something': require('./Component'),
'somethingElese': require('./Component2')
};
Example = React.createClass({
render: function() {
var component = Components[this.props.filter];
return <div><component tasks={this.props.tasks}/></div>;
}
});
我无法让 Crob 的答案起作用(虽然我很欣赏散列 table 的想法),但它让我找到了解决方案 - 我只是跳过了 jsx 步骤并使用了编译后的 js:
React.createElement(component, {tasks: this.props.tasks} )
总而言之:
var Components = {
'something': require('./Component'),
'somethingElese': require('./Component2')
};
Example = React.createClass({
render: function() {
var component = Components[this.props.filter];
React.createElement(component, {tasks: this.props.tasks} )
}
});
我找不到解决这个问题的方法。如何将下面的代码转换为更动态和简洁的代码?
OneComponent = require ('./OneComponent')
TwoComponent = require ('./TwoComponent')
ThreeComponent = require ('./ThreeComponent')
Example = React.createClass
render: ->
filter = @props.filterState
if filter is 'something'
tableCmpt =
<div>
<OneComponent
tasks={@props.tasks}
/>
</div>
if filter is 'somethingElse'
tableCmpt =
<div>
<TwoComponent
tasks={@props.tasks}
/>
</div>
##... etc
return tableCmpt
我做过这样的事情。
var Components = {
'something': require('./Component'),
'somethingElese': require('./Component2')
};
Example = React.createClass({
render: function() {
var component = Components[this.props.filter];
return <div><component tasks={this.props.tasks}/></div>;
}
});
我无法让 Crob 的答案起作用(虽然我很欣赏散列 table 的想法),但它让我找到了解决方案 - 我只是跳过了 jsx 步骤并使用了编译后的 js:
React.createElement(component, {tasks: this.props.tasks} )
总而言之:
var Components = {
'something': require('./Component'),
'somethingElese': require('./Component2')
};
Example = React.createClass({
render: function() {
var component = Components[this.props.filter];
React.createElement(component, {tasks: this.props.tasks} )
}
});