Компонент таблицы React onClick в полноэкранном режиме

Я работаю над панелью инструментов, которая содержит множество визуальных элементов вместе с таблицей. Но на основе пользовательского выбора таблица может быть большой, а данные в таблице могут быть слишком маленькими для чтения. Из-за этого мне нужно сделать этот визуальный полноэкранный режим нажатием кнопки.

Также для выхода из полноэкранного режима? Как лучше всего это сделать, не усложняя код?

код:

import "./styles.css";

export default function DataTable7() {

  let totalWeeks= 10;

  const rawData = [
    [15,'','','',1,'',1,'','',5,8,7],
    [7,'','','',1,'',1,'','',5,2],
    [6,'','','','','','','',6,0],
    [3,'','','','','','',2,0],
    [2,1,'','','','',1,1],
    [2,'','','','',2,0],
    [1,'','','',1,0],
    [2,'',1,1,1],
    [2,'',1,0],
    ['-','-','-']
    ];


  const makeFullscreen = () => {
    element.requestFullscreen()
  }



  
  return (

    <>
    <div>
    <div className = "tableContainer">
    <table className = "lostAssets">

      <thead>
        <tr>
          <th>Week</th>
          

          {new Array(totalWeeks).fill(null).map((_, i) => {
              return <th>{i+1}</th>;
            })}

          <th>Win</th>
          <th>Lose</th>
        </tr>
      </thead>


      <tbody>

        {rawData.map((item, index) => {
          return (
            <>
            <tr>
              <th>{index + 1}</th>
              {[...Array(rawData[0].length - item.length)].map((item) => { 
                return <td></td>;  //for empty values
              })}
              {item.map((itm) => {
                return <td>{itm}</td>;
              })}
              
            </tr>
            
            </>
          );
        })}

      </tbody>
      
    </table>
    </div>
    <button onClick = {makeFullscreen}>
      Full Screen
    </button>
    </div>
    </>  
  );
   
}

CSS:

table, tr, td, th {
  border: 1px solid #9b9b9b;
  border-collapse: collapse;
  
  text-align: center;
  padding: .4em;
}

.tableContainer{
 
  height: 200px;
  width: 390px;
 
  overflow: scroll;
}

Table thead{
  position: sticky;
  top: 0px;
  margin: 0 0 0 0;
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
159
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать этот фрагмент кода.

export default function DataTable7() {
  const ref = useRef();
  const makeFullscreen = () => {
        var elem = ref.current;
        if (elem.requestFullscreen) {
            elem.requestFullscreen();
        } else if (elem.webkitRequestFullscreen) {
            /* Safari */
            elem.webkitRequestFullscreen();
        } else if (elem.msRequestFullscreen) {
            /* IE11 */
            elem.msRequestFullscreen();
        }
  }
  ...
 <table ref = {ref} className = "lostAssets">
  ...
}

Также не забудьте сохранить белый цвет фона для таблицы, иначе текст не будет виден.

table, tr, td, th {
  background: white;
  border: 1px solid #9b9b9b;
  border-collapse: collapse;
  
  text-align: center;
  padding: .4em;
}

По сути, мы ссылаемся на контейнер div таблицы, используя useRef, и делаем этот элемент полноэкранным, используя собственный метод браузера javascript.

Привет. Спасибо за это. Но useRef() не определен, верно?

Adam 04.10.2022 18:51

Вы можете импортировать его из реакции. import { useRef } from "react";

G Sriram 04.10.2022 18:51

Спасибо, Шрирам!!! но я столкнулся с проблемой в этой строке elem.requestFullscreen(); У вас есть идеи?

Adam 04.10.2022 19:00

С какой проблемой вы столкнулись? Не могли бы вы уточнить?

G Sriram 04.10.2022 19:02

Когда я нажимаю кнопку полноэкранного режима, он показывает мне ошибку в этой строке. Если можно, можете прислать ссылку на песочницу?

Adam 04.10.2022 19:07

Вы пытаетесь запустить свой код на codeandbox? Затем он выдает полноэкранную ошибку, что в основном означает, что полноэкранный режим запрещен. Попробуйте запустить его с помощью сервера реагирования в браузере. Работает для меня.

G Sriram 04.10.2022 19:13

да.мой плохой. Он работает в коде VS. Еще раз спасибо

Adam 04.10.2022 19:21

Другие вопросы по теме