Компоненты React переопределяют внутри рендера

Я новичок в реакции.

Я пытаюсь вывести два компонента с response 16+, которые начинаются следующим образом:

function InsuranceInfo(props) {...

// and

function InsuranceCustomerInfo(props) {...

и функция рендеринга основного компонента выглядят так

render()
{
      return (
            <InsuranceInfo args = {this.state.orderIfo}/>, 
            <InsuranceCustomerInfo args = {this.state.orderIfo}>
      )
}

когда я загружаю страницу, я вижу только последнюю.

кто-нибудь может помочь, пожалуйста? благодарю вас!

Оберните свои компоненты в div, компоненты React должны возвращать только один компонент или один их массив. Кроме того, не подделывайте закрывающую косую черту во втором компоненте.

Davo 04.11.2018 15: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) для оценки ваших знаний,...
1
1
174
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Правильный способ добиться того, чего вы хотите, - использовать HOC (компоненты высшего порядка)

Посмотрите документацию здесь для более подробной информации.

HOC, вероятно, более сложны, чем то, что здесь нужно OP.

Code-Apprentice 04.11.2018 15:51
Ответ принят как подходящий

Попробуйте это, используя фрагмент

render()
{
  return (
     <>
        <InsuranceInfo args = {this.state.orderIfo}/>
        <InsuranceCustomerInfo args = {this.state.orderIfo}>
     </>
  )
}

Или массив

render()
{
  return [
      <InsuranceInfo key = "info" args = {this.state.orderIfo}/>, 
      <InsuranceCustomerInfo key = "customer" args = {this.state.orderIfo}>
  ];
}

благодарю вас! это работа только с примером массива без ключевого атрибута

Victorino 04.11.2018 15:54

Не используйте знак запятой (,) между компонентами. Либо оберните возвращаемый компонент в какой-нибудь элемент html

render()
{
    return (
       <div>
         <InsuranceInfo args = {this.state.orderIfo}/>
         <InsuranceCustomerInfo args = {this.state.orderIfo} />
       </div>
    )
}

или используйте React Fragments:

render()
{
    return (
        <React.Fragment>
           <InsuranceInfo args = {this.state.orderIfo}/>
           <InsuranceCustomerInfo args = {this.state.orderIfo} />
        </React.Fragment>
    )
}

Примечание для OP: ключ в том, что render() должен возвращать один компонент. Вы возвращаете несколько компонентов, упаковывая их в какой-то контейнер, например <div>, как показано в этом ответе.

Code-Apprentice 04.11.2018 15:52

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