5
0

More than 3 years have passed since last update.

Reactでいい感じのサブウィンドウを実装する ② 全画面編

Last updated at Posted at 2021-01-01

前回の記事の続きです。

前回は、いい感じのサブウィンドウを配置するとこで終わったので、今回はこれに全画面表示する機能を付けていきます。

追加するとこんな感じです。
Videotogif (1).gif

やり方

前回のソースコードに、全画面の状態を持つフックを追加し、
全画面の状態の時に、sizeを指定してあげれば終わりです!

import "./App.css";
import React, { useState } from "react";
import { Rnd } from "react-rnd";

function App() {
  const [isOpen, setIsOpen] = useState(false);
  // 今回ここに全画面表示を管理する状態(ステートフック)を追加
  const [isFull, setisFull] = useState(false);

  return (
    <div className="App">
      <header className="App-header">
        <button onClick={() => setIsOpen(true)}>サブウィンドウを開く</button>
        <br />

        {/* 全画面表示するボタンも追加します */}
        <button
          onClick={() => {
            setIsOpen(true);
            setisFull(true);
          }}
        >
          ウィンドウを全画面で開く
        </button>

        {isOpen ? (
          <Rnd
            style={{
              background: "#fff"
            }}
            default={{
              x: 0,
              y: 0,
              width: 320,
              height: 200
            }}
            // 全画面表示の時は、幅,高さ共に100%表示へ
            size={
              isFull
                ? {
                    width: "100%",
                    height: "100%"
                  }
                : undefined
            }
          >
            <button
              onClick={() => {
                {
                  /* 閉じるときに全画面表示の状態もfalseにします */
                }
                setisFull(false);
                setIsOpen(false);
              }}
            >
              サブウィンドウを閉じる
            </button>
          </Rnd>
        ) : (
          <></>
        )}
      </header>
    </div>
  );
}

export default App;

最後に

状態を一つ持たせるだけで全画面表示の切り替えができるようになりましたね

次は、リサイズやウィンドウ動かす機能のオンオフのやり方について紹介していきます。

最後まで読んでよかったらLGTMお願いします!

まとめ記事 もあるのでよければこちらもみてください

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0