Примечание: Этот вопрос не является дубликатом Имя динамического компонента React / JSX .Мне уже известно о решении, используемом там в принятом ответе, и если вы прочитаете мой вопрос ниже, я уже использую аналогичное решение (используя карту для преобразования строки в класс компонента).Мой вопрос здесь заключается в том, могу ли я избежать обслуживания такой карты и преобразовать строку непосредственно в класс компонента.
Вот мой код в index.js
:
import React from 'react'
import ReactDOM from 'react-dom'
class Foo extends React.Component {
render() {
return <h1>Foo</h1>
}
}
class Bar extends React.Component {
render() {
return <h1>Bar</h1>
}
}
function renderComponent(Component) {
ReactDOM.render(<Component />, document.getElementById('root'))
}
function getComponent(name) {
let map = {
'Foo': Foo,
'Bar': Bar,
}
return map[name]
}
renderComponent(getComponent('Foo'))
getComponent()
Функция принимает имя класса компонента React в качестве строкового ввода и возвращает соответствующий класс?
В настоящее время у меня есть литерал объекта для сопоставления каждого имени класса с классом?Каждый раз, когда я добавляю новый класс, я должен обновлять этот литерал объекта.Есть ли способ, которым я могу избежать поддержки литерала этого объекта?
Есть ли способ написать getComponent()
таким образом, чтобы он мог преобразовать имя класса как строковый ввод непосредственно в класс?