Передать компонент как опору в Reactjs

У меня есть статья, показывающая, как передать компонент в качестве опоры, но я не мог заставить ее работать, может ли кто-нибудь мне помочь?

Это тот пример, который я получил.

import React from "react";
import Foo from "./components/Foo";
import Bar from "./components/Bar";

const Components = {
  foo: Foo,
  bar: Bar
};

export default block => {
  // component does exist
  if (typeof Components[block.component] !== "undefined") {
    return React.createElement(Components[block.component], {
      key: block._uid,
      block: block
    });
  }
}

А это мой код

У меня есть один файл с именем routes.js, состояние которого называется маршрутами.

var routes = [
  {
    path: "/user-profile",
    name: "Quem Somos",
    icon: "FaIdBadge",
    component: UserProfile,
    layout: "/admin"
  }

И еще один компонент, называемый боковой панелью, где я получаю маршруты и мне нужно изменить значок в зависимости от того, что настроено в опоре "маршруты".

const Components = {
      fa:FaIdBadge
    }

<i>{prop => Components(prop.icon)}</i>

Но свойство со значком не распознается.

1 ответ

Вы довольно близки.

Выбор типа в качестве среды выполнения

import React from 'react';
import { PhotoStory, VideoStory } from './stories';

const components = {
  photo: PhotoStory,
  video: VideoStory
};

function Story(props) {
  // Correct! JSX type can be a capitalized variable.
  const SpecificStory = components[props.storyType];
  return <SpecificStory story={props.story} />;
}

Так что конкретнее для вашего примера

// component map in the file for lookup
const components = {
  fa: FaIdBadge,
}

...

  // In the render function
  // fetch the component, i.e. props.icon === 'fa'
  const IconComponent = components[props.icon];

  ...

  <IconComponent />
Другие вопросы по тегам