Класс в функциональный компонент - PullRequest
0 голосов
/ 09 мая 2020

Я очень новичок в реакции на родных. Разрабатываемое мной приложение имеет функциональные компоненты.

Есть ли способ преобразовать компонент класса в функциональный компонент или преобразовать этот класс в функцию?

Можно ли использовать как функциональный компонент, так и компонент класса одновременно в одном приложении?

import React from 'react';
import DayPicker, { DateUtils } from 'react-day-picker';
import 'react-day-picker/lib/style.css';

export default class Example extends React.Component {
  constructor(props) {
    super(props);
    this.handleDayClick = this.handleDayClick.bind(this);
    this.state = {
      selectedDays: [],
    };
  }

  handleDayClick(day, { selected }) {
    const { selectedDays } = this.state;
    if (selected) {
      const selectedIndex = selectedDays.findIndex(selectedDay =>
        DateUtils.isSameDay(selectedDay, day)
      );
      selectedDays.splice(selectedIndex, 1);
    } else {
      selectedDays.push(day);
    }
    this.setState({ selectedDays });
  }

  render() {
    return (
      <div>
        <DayPicker
          selectedDays={this.state.selectedDays}
          onDayClick={this.handleDayClick}
        />
      </div>
    );
  }
}

1 Ответ

1 голос
/ 09 мая 2020

Да, вы можете использовать как функциональный, так и классовый компонент одновременно

    import React, {useState} from "react";
    import DayPicker, { DateUtils } from 'react-day-picker';
    import 'react-day-picker/lib/style.css';

    export default function Example(props = {}) { 

       // read about useState hooks, it replace state 
      const [selectedDays, setSelectedDays] = useState([]);


      handleDayClick(day, { selected }) {

        if (selected) {
          const selectedIndex = selectedDays.findIndex(selectedDay =>
            DateUtils.isSameDay(selectedDay, day)
          );
          selectedDays.splice(selectedIndex, 1);
        } else {
          selectedDays.push(day);
        }
        setSelectedDays( selectedDays );
      }

      render() {
        return (
          <div>
            <DayPicker
              selectedDays={ selectedDays}
              onDayClick={handleDayClick}
            />
          </div>
        );
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...