У меня есть список массивов, я хотел бы сопоставить строку с именем компонента, возможно ли это? Я попробовал это https://codesandbox.io/s/lpzq3jvjm7
function App() {
const obj = {
name: "Name"
};
const capitalize = (s) => {
if (typeof s !== 'string') return ''
return s.charAt(0).toUpperCase() + s.slice(1)
}
return (
<div className = "App">
{React.createElement(capitalize(obj.name), {
name: "james"
})}
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
не работает, есть подсказки?
Вы можете импортировать из этого файла import Name from whatever path of that file



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Трудно сказать, с какой ошибкой вы на самом деле столкнулись, поскольку у вас не было компонента с именем Name. Простое исправление?
function Name(props) {
return props.name
}
function App() {
const obj = {
name: Name
};
return (
<div className = "App">
{React.createElement(obj.name, {
name: "james"
})}
</div>
);
}
Печатает james на странице.
Обновлять
Вам не хватает нескольких вещей.. во-первых, импорт вашего компонента
import Name from './Name'
а внутри Name.js вам не хватало импорта реакции
import React from 'react'
export default ({ name }) => <h1>my name is {name}</h1>;
и обязательно установите фактическое значение Name для вашего объекта, а не для строки `"Имя"
const obj = {
name: Name
};
У меня есть компонент Name, он находится в Name.js
@CodeManiac, что, если у меня уже есть компонент, но он находится в другом файле? codeandbox.io/s/5k41vv116n