Деструктуризация в компоненте класса React

Есть ли другой способ использования деструктуризации ES6 в компоненте React Class без необходимости делать это в каждом методе?

Я использую ту же опору (this.prop.page) в методах constructor, componentDidMount(), componentDidUpdate() и render():

class SinglePage extends React.Component {

  constructor(props) {
    super(props);
    const { page } = this.props;
    //...
  }

  componentDidMount() {
    const { page } = this.props;
    //...
  }

  componentDidUpdate() {
    const { page } = this.props;
    //...
  }

  render() {
    const { page } = this.props;
    return (
     //...
    );
  }
}

exports default SinglePage;

Есть ли способ сделать это только один раз?

Нет. Или, по крайней мере, не в хорошем смысле.

Jonas Wilms 11.03.2019 22:22

@Jonas Wilms Спасибо :)

viery365 11.03.2019 22:23

Используйте функциональный компонент, зачем вам класс?

k.s. 11.03.2019 22:24

преобразовать в функциональный компонент.. 8)

lecstor 11.03.2019 22:24

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

viery365 11.03.2019 22:25
Поведение ключевого слова "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
5
2 030
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Есть, если вы можете использовать последнюю версию реакции с хуками. UseEffect заменит didMount и didUpdate, а также конструктор без функционального компонента. Я рекомендую прочитать эту статью о хуке useEffect. https://overreacted.io/a-complete-guide-to-useeffect/

Да! Хуки — это путь, который вы должны исследовать!

Ricardo Gonzalez 11.03.2019 23:10
Ответ принят как подходящий

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

import React, { useEffect } from React;

function SinglePage({ page }) {

  useEffect(() => {
    // componentDidMount() {
  }, []); // empty array here means it'll only run after the first render

  useEffect(() => {
    // componentDidMount() {
    // componentDidUpdate() {
  }); // no second are means it runs after every render

  useEffect(() => {
    // componentDidMount() {
    // componentDidUpdate() {
  }, [page]); // runs on initial render and whenever `page` changes

  useEffect(() => {
    return () => cancelTheThings(); // componentWillUnMount() {
  }); // return a function from your useEffect function to have it run before unmount

  return {
    //...
  }
}

export default SinglePage;

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