Как передать аргументы компоненту расширения класса

Я пытаюсь расширить компонент как таковой:

class LoginPage extends React.Component {
...
}

export default withKeycloak(LoginPage);

Однако пример делает это следующим образом:

const LoginPage = ({ keycloak, keycloakInitialized }) => {

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

Я читал документацию, но она не совсем ясна.

Ключевым отличием здесь являются деструктурированные реквизиты в компоненте без сохранения состояния. В компоненте состояния реквизиты передаются в функцию-конструктор.

Sterling Archer 06.06.2019 19:26

О, понял, значит, я должен иметь доступ к этим переменным из this.props? Или мне нужно что-то сделать с конструктором

Steven Matthews 06.06.2019 19:27

Стерлинг прав, и в дополнение к его комментарию, реквизит доступен с помощью this.props.

Emile Bergeron 06.06.2019 19:28

Определите свой конструктор как constructor(props) { super(props); }. Проверьте документы для более подробного объяснения

Sterling Archer 06.06.2019 19:28

@SterlingArcher Конструктор является необязательным, если вы не собираетесь ничего к нему добавлять.

Emile Bergeron 11.06.2019 17:16
Поведение ключевого слова "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) для оценки ваших знаний,...
0
5
422
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

render() {
const {keycloak, keycloakInitialized} = this.props

return(<div></div>)

}

убедитесь, что вы также объявляете свои реквизиты внутри своего конструктора.. вот так. конструктор (реквизит) {супер (реквизит)}

Brad Ball 06.06.2019 19:31

Конструктор является необязательным, если вы не собираетесь ничего к нему добавлять.

Emile Bergeron 11.06.2019 17:16

конструктор не является необязательным, когда вам нужно получить доступ к this.props?

Brad Ball 11.06.2019 20:10

Это. constructor(props){ super(props); } является эквивалентом конструктора по умолчанию, вам не нужно добавлять его самостоятельно, если вы не хотите его переопределить.

Emile Bergeron 11.06.2019 20:32
Ответ принят как подходящий

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

const {keycloak, keycloakInitialized} = this.props;

// or simply
console.info(this.props.keycloak);

и вы должны взглянуть на это, чтобы понять деструктурирование.

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