// console.log(returnModule) re">
但是,即使我的函数返回正确的JSX,它也不会在我的呈现方法中转换为组件。
renderModule(moduleId) {
let AddModule = "Modules.module" + moduleId
let returnModule = <AddModule/>
// console.log(returnModule)
return returnModule
}
render() {
return (
<div>
<ul>
{this.props.templateModules.map((module, index) =>
<TemplateContent
removeModule={this.removeModule}
key={index}
>
{this.renderModule(module)}
</TemplateContent>
)}
</ul>
</div>
)
}
我的TemplateContent代码:
const TemplateContent = (props) => {
return (
<div>
{props.children}
</div>
)
}
因此,在浏览器中,我可以看到而不是对象。但是,如果我将其赋值给returnModule,则它确实正确地呈现。
尽管当从变量AddModule创建对象时,我可以在控制台中看到它,但它仍然不会在render方法中传递。
我做错了什么?我从模块文件夹导入index.js文件中的模块。
从‘./组件/模块’导入*作为模块
提前谢谢!)
发布于 2017-03-23 08:16:31
您的代码目前正在将像'Modules.module1'
这样的字符串传递给React.createElement
,而不是对模块Module.module1
本身的引用。您需要将模块名转换为Modules
导入的引用:
import * as Modules from '../components/modules'
// ...
renderModule(moduleId) {
// Will be a reference to the component, not a string
let AddModule = Modules[`module${moduleId}`]
let returnModule = <AddModule/>
return returnModule
}
发布于 2017-03-23 07:37:21
为此,您缺少了return statement
和{}
像这样试试
{this.props.templateModules.map((module, index) =>{
return <TemplateContent
removeModule={this.removeModule}
key={index}
>
{this.renderModule(module)}
</TemplateContent>
})}
https://stackoverflow.com/questions/42980588
复制相似问题