ReactJS — как динамически изменять html-разметку?

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

Вот моя песочница:https://codesandbox.io/s/determined-clarke-gvrzv?fontsize=14

Я бы динамически изменил свою html-разметку в зависимости от переменной javascript, как показано ниже:

let markup= "li"
function App() {
 return (
    <div className = "App">
      <[markup]>Hello World</[markup]> 
    </div>
 );
}

консоль возвращает меня:

Unexpected token

Как справиться с этой проблемой?

Спасибо за любую подсказку!

Вы можете использовать реакцию без синтаксиса jsx. reactjs.org/docs/реакт-без-jsx.html

sertsedat 27.05.2019 23:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
472
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ты можешь сделать:

const Markup = "li";

return (
  <div className = "app">
    <Markup>Hello World</Markup>
  </div>
)

Я не знаю точно, что вы пытаетесь сделать, но вы также можете рассмотреть возможность условного рендеринга другого компонента:

const temperature = -20;

return (
  temperature < 30 ? <Cold /> : <Warm />
);

или условно поменять встроенную разметку:

const isCold = temp => temp < 30;

const temperature = -12;

return (
  isCold(temperature) ? <div>Brrr!</div> : <span>Sunshine!</span>
);

И, наконец, если у вас есть много возможных вариантов, вы можете установить функцию getComponent, чтобы выяснить, что отображать:

const SeasonalComponents = [
  {
    handles: temp => temp < 0,
    component: () => <div>Brrr!</div>
  },
  {
    handles: temp => temp < 30,
    component: () => <div>Get your coat!</div>
  },
  {
    handles: temp => temp < 50,
    component: () => <div>Just a jacket</div>
  },
  {
    handles: temp => temp < 100,
    component: () => <ImportedSummerComponent />
  }
];

function getComponent (temperature) {
  const seasonal = SeasonalComponents.find(x => x.handles(temperature);
  return seasonal ? seasonal.component : <span>Unseasonable weather!</span>;
}

который позволяет вашему методу рендеринга выполнять поиск:

const Component = getComponent(this.props.temp);

return (
  <Component />
);

круто, отлично работает, мне нужен многоразовый компонент с любым типом разметки, выбранным внутри во время кодирования, поэтому жесткое кодирование другого компонента было бы очень сложным решением :/, тем не менее, разметка шапки работает просто отлично :)!

Webwoman 28.05.2019 00:03

просто не забудьте использовать верхний регистр для первого символа имени переменной

xadm 28.05.2019 00:10

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

ray hatfield 28.05.2019 00:17

Другие вопросы по теме