TIL 2020/05/15

코드깎는 노인·2020년 5월 15일
0
import React, { useEffect, useState } from "react";

const Dates = ({ dates }) => {
  const [datesDivision, setDatesDivison] = useState({
    0: [{ date: 20200501, isVailable: true }],
  });

  useEffect(() => {
    setDatesDivison(divideDates());
  }, [dates]);

  const divideDates = () => {
    let result = {
      0: [{ date: 20200501, isVailable: true }],
    };
    let num = Math.ceil(dates.length / 8); //function to seperate dates
    let count = 0;
    for (let i = 0; i < num; i++) {
      let item = [];
      for (let j = count; j < count + 8; j++) {
        if (dates[j] !== undefined) item.push(dates[j]);
      }
      count = count + 8;
      result[i] = item;
    }
    return result;
  };

  return (
    <div>
      <div className="col2">
        {datesDivision[0].map((item) => (
          <div>{item.date.toString().substring(6, 8)}</div>
        ))}
      </div>
    </div>
  );
};

// dates props
// [
// {date: 20200501, isVailable: true},
// {date: 20200502, isVailable: true},
// {date: 20200503, isVailable: true},
// {date: 20200504, isVailable: true},
// {date: 20200505, isVailable: true},
// {date: 20200506, isVailable: true},
// {date: 20200507, isVailable: true},
// {date: 20200508, isVailable: true},
// {date: 20200509, isVailable: true},
// {date: 20200510, isVailable: true},
// {date: 20200511, isVailable: true},
// {date: 20200512, isVailable: true},
//]

dates props를 여러단위로 나눠 렌더링하는중 divideDates 의 result를 {}로 설정했더니 초기 렌더링시 divideDates의 return값이 {}이 되어 map이 돌아가지 않았다.해결방법은
result의 초깃값을 렌더링가능값 값으로 바꿔주거나 datesDivision[0] &&datesDivision[0].map((item) => (과 같이 조건부 렌더링을 해줘야 한다

profile
내가 볼려고 만든 블로그

0개의 댓글