类到功能组件

时间:2020-05-08 21:33:07

标签: react-native

我是新来的人。我正在开发的应用程序具有功能组件。

有什么方法可以将类组件转换为功能组件或将此类转换为函数?

是否可以在单个应用程序中同时使用功能和类组件?

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 个答案:

答案 0 :(得分:1)

是的,您可以同时使用功能和类组件

    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>
        );
      }
    }