Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays react将字符串转换为react组件_Arrays_Reactjs_React Component - Fatal编程技术网

Arrays react将字符串转换为react组件

Arrays react将字符串转换为react组件,arrays,reactjs,react-component,Arrays,Reactjs,React Component,这可能有点奇怪,我有一个字符串数组和一堆React组件。 例如: const str = ['server','volume','route'] const Server = () => 'This is a server' const Volume = () => 'This is a server' 诸如此类,你明白了 我试图将str映射到匹配的react组件并返回组件 我知道我可以使用一个循环和一个开关来检查每个项目并返回相应的组件,但是有没有这样的创意: {str.map

这可能有点奇怪,我有一个字符串数组和一堆React组件。 例如:

const str = ['server','volume','route']

const Server = () => 'This is a server'
const Volume = () => 'This is a server'
诸如此类,你明白了

我试图将str映射到匹配的react组件并返回组件

我知道我可以使用一个循环和一个开关来检查每个项目并返回相应的组件,但是有没有这样的创意:

{str.map(Y => <Y />)}
{str.map(Y=>)}

不是一个非常常见的用例,但绝对可能。 首先将所有项目转换为组件

const data = const str = ['server','volume','route']
const components = data.map(x => props => <div {...props}>{x}</div>)
const data=const str=['server'、'volume'、'route']
const components=data.map(x=>props=>{x})
现在渲染每一个

return components.map((Component, i) => <Component key={i} customProp='foo'/>)
返回组件.map((组件,i)=>)

您需要使用对象作为组件映射,如下所示:

const componentsMap = {
  "server": Server,
  "route": Route,
  "volume": Volume
}

{str.map(key => {
  const TheComponent = componentsMap[key];
  return <TheComponent />
})}
const组件映射={
“服务器”:服务器,
“路线”:路线,
“体积”:体积
}
{str.map(键=>{
常量组件=组件映射[键];
返回
})}