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

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

Если я повторно использую этот компонент в другом месте, мне придется изменить все полученные реквизиты.

Это обычное дело при разработке в React или я что-то делаю не так?

ИМО, это запах кода, что повторно используемый компонент должен быть новым компонентом. Другими вариантами могут быть декомпозиция частей компонента в новый компонент, чтобы их можно было повторно использовать, если есть очевидная закономерность.

engineerDave 13.12.2018 17:18

Повторное использование - это то, в чем React действительно хорош, поэтому я предполагаю, что вы делаете что-то не так. Возможно, лучше всего опубликовать код, чтобы лучше объяснить вашу проблему.

Keith 13.12.2018 17:18
Поведение ключевого слова "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
2
125
2

Ответы 2

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

Компонент A. Функциональность (и все необходимые реквизиты)

Компонент B. Тип контейнера без подпорок, только удерживающий компонент A

Надеюсь, это вам поможет!

Да - обычное дело и часто разрешается с помощью HoC (компоненты высокого порядка)

ссылка: https://reactjs.org/docs/higher-order-components.html

Пример

function logProps(WrappedComponent) {
  return class extends React.Component {
    componentWillReceiveProps(nextProps) {
      console.info('Current props: ', this.props);
      console.info('Next props: ', nextProps);
    }
    render() {
      // Wraps the input component in a container, without mutating it. Good!
      return <WrappedComponent {...this.props} />;
    }
  }
}

const EnhancedComponent = logProps(WrappedComponent);

Спасибо, что указали на это! (Я новичок, чтобы отреагировать, что вы думаете о моем ответе, это всего лишь мое мнение ...)

Moshe Slavin 13.12.2018 17:35

В вашем ответе в основном описывается паттерн HoC! :)

Mosè Raguzzini 13.12.2018 17:45

Спасибо за то, что позаботились об этом! Я собирался добавить пример, но ваш идеален! React потрясающий! логика логична! ;) Спасибо за ваше время!

Moshe Slavin 13.12.2018 17:50

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