Как получить класс компонента React из строки, содержащей имя класса? - PullRequest
0 голосов
/ 21 апреля 2019

Примечание: Этот вопрос не является дубликатом Имя динамического компонента 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() таким образом, чтобы он мог преобразовать имя класса как строковый ввод непосредственно в класс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...