Я работаю над панелью инструментов, которая содержит множество визуальных элементов вместе с таблицей. Но на основе пользовательского выбора таблица может быть большой, а данные в таблице могут быть слишком маленькими для чтения. Из-за этого мне нужно сделать этот визуальный полноэкранный режим нажатием кнопки.
Также для выхода из полноэкранного режима? Как лучше всего это сделать, не усложняя код?
код:
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;
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать этот фрагмент кода.
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.
Вы можете импортировать его из реакции. import { useRef } from "react";
Спасибо, Шрирам!!! но я столкнулся с проблемой в этой строке elem.requestFullscreen(); У вас есть идеи?
С какой проблемой вы столкнулись? Не могли бы вы уточнить?
Когда я нажимаю кнопку полноэкранного режима, он показывает мне ошибку в этой строке. Если можно, можете прислать ссылку на песочницу?
Вы пытаетесь запустить свой код на codeandbox? Затем он выдает полноэкранную ошибку, что в основном означает, что полноэкранный режим запрещен. Попробуйте запустить его с помощью сервера реагирования в браузере. Работает для меня.
да.мой плохой. Он работает в коде VS. Еще раз спасибо
Привет. Спасибо за это. Но useRef() не определен, верно?