react + moment js を使用してシンプルな今月のカレンダーを作成しようとしています。月の最初の日と終了日を取得できます。今度は日 (月、火...) の下に日付を表示したいと思います。最初の 9 月 01-08-2020 は火曜日より下になります
これが私のコードです
https://codesandbox.io/s/quirky-ellis-xh5tn?file=/src/App.js
実際はこんな感じ
しかし、現在、私の日付はこのように水平方向に表示されています。
これが私のコードです
import React, { useState } from "react";
import "./styles.css";
import moment from "moment";
function fetchMonthDates() {
let monthDates = [];
let start = moment().startOf("month").date();
let end = moment().endOf("month").date();
for (let i = 0; i < end; i++) {
let obj = {
_id: moment().startOf("month").add(i, "days").format("DD-MMM-YYYY"),
date: moment().startOf("month").add(i, "days").date()
};
monthDates.push(obj);
}
return monthDates;
}
export default function App() {
const [state, setState] = useState(() => fetchMonthDates());
return (
<div className="App">
<ul className="header">
<li className="header-item pd15">Sun</li>
<li className="header-item pd15">Mon</li>
<li className="header-item pd15">Tue</li>
<li className="header-item pd15">Wed</li>
<li className="header-item pd15">Thu</li>
<li className="header-item pd15">Fri</li>
<li className="header-item pd15">Sat</li>
</ul>
<ul className="date-items">
{state.map((i) => (
<li className="pd15">{i.date}</li>
))}
</ul>
</div>
);
}
スタイルを探しているわけではありませんが、日付は日の下に表示されるはずです。可能でしょうか。datepicker は使いたくないのですが、カスタムの今月のカレンダーを作成しています。
何かアップデートはありますか?それは可能です
------------------------
これは基本的なものですが、永続的に使用できるように調整できます。
// App.js
import React, { useState } from "react";
import "./styles.css";
import moment from "moment";
function fetchMonthDates() {
let monthDates = [];
let start = moment().startOf("month").date();
let end = moment().endOf("month").date();
// this is to offset the starting day, which was a Tues for September
const firstDayOffSet = moment().startOf("month").day();
for (let i = 0; i < end; i++) {
let obj = {
_id: moment().startOf("month").add(i, "days").format("DD-MMM-YYYY"),
date: moment().startOf("month").add(i, "days").date()
};
monthDates.push(obj);
}
// pads the beginning of the array to slide the days to the right
// you'll want to pad this with the previous months days up to the
// offset count
return [...[...new Array(firstDayOffSet)].map(()=> ({_id: '', date: ''})),...monthDates];
}
export default function App() {
const [state, setState] = useState(() => fetchMonthDates());
return (
<div className="App">
<ul className="calendar">
<li className="header-item pd15">Sun</li>
<li className="header-item pd15">Mon</li>
<li className="header-item pd15">Tue</li>
<li className="header-item pd15">Wed</li>
<li className="header-item pd15">Thu</li>
<li className="header-item pd15">Fri</li>
<li className="header-item pd15">Sat</li>
{state.map((i) => (
<li className="pd15">{i.date}</li>
))}
</ul>
</div>
);
}
// styles.css
.App {
font-family: sans-serif;
}
ul {
list-style: none;
}
.pd15 {
padding: 5px;
text-align: center;
}
.calendar {
display: grid;
grid-template-columns: auto auto auto auto auto auto auto;
grid-template-rows: auto;
border-bottom: 1px solid #eeeeee;
border-top: 1px solid #eeeeee;
}
正しく見えるようにいくつかのスタイルを設定しましたが、必要ない場合は無視してください。
9 月の結果は次のとおりです。
1
なぜ初歩的なのでしょうか??
– user944513
2020 年 9 月 5 日 2:39