【问题标题】:Class To Function Component类到函数组件
【发布时间】:2020-05-08 21:33:07
【问题描述】:

我对本机反应很陌生。我正在开发的应用程序具有功能组件。

有没有办法将类组件转换为函数组件或将这个类转换为函数?

是否可以在单个应用中同时使用函数和类组件?

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

【问题讨论】:

    标签: react-native


    【解决方案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>
            );
          }
        }
    

    【讨论】:

    猜你喜欢
    • 2021-05-08
    • 2018-11-16
    • 2022-07-19
    • 1970-01-01
    • 2020-02-22
    • 2021-12-16
    • 2020-12-12
    • 2021-04-15
    相关资源
    最近更新 更多