У меня, наверное, есть невозможное, что я хотел бы сделать для своего сайта-портфолио. Я хочу использовать библиотеку React-Burger-Menu и импортировать все компоненты меню и выбирать один случайным образом при загрузке экрана. Я решил создать массив со всем импортом и использовать функцию math.random, чтобы посмотреть, сработает ли это. Конечно, нет. Я понимаю, что это, наверное, действительно глупо, но я думаю, было бы так здорово, если бы это сработало. Вот что у меня есть для случайной функции:
import { slide as Menu0 } from 'react-burger-menu';
import { stack as Menu1 } from 'react-burger-menu';
import { elastic as Menu2 } from 'react-burger-menu';
import { bubble as Menu3 } from 'react-burger-menu';
import { push as Menu4 } from 'react-burger-menu';
import { pushRotate as Menu5 } from 'react-burger-menu';
import { scaleDown as Menu6 } from 'react-burger-menu';
import { scaleRotate as Menu7 } from 'react-burger-menu';
import { fallDown as Menu8 } from 'react-burger-menu';
import { reveal as Menu9 } from 'react-burger-menu';
Menus = Array[Menu0, Menu1, Menu2, Menu3, Menu4, Menu5, Menu6,
Menu7, Menu8, Menu9]
var Menu = Menus[Math.floor(Math.random() * Menus.length)];
export default Menu;
И здесь, как написано в документации, я оборачиваю свою навигацию тегами <Menu></Menu>. Вот код:
import Menu from './sidebar';
import Contact from "../pages/contact";
import Portfolio from "../pages/portfolio";
import Index from "../pages/index";
import "../styles/customnav.css";
class customnav extends Component {
render() {
return (
<Menu>
<HashRouter>
<div>
<nav className = "stroke">
<ul className = "menu">
<li>
<NavLink className = "menu-item" to = "/">
Home
</NavLink>
</li>
<li>
<NavLink className = "menu-item" to = "/portfolio">
Portfolio
</NavLink>
</li>
<li>
<NavLink className = "menu-item" to = "/contact">
Contact
</NavLink>
</li>
</ul>
<Route exact path = "/" component = {Index} />
<Route path = "/portfolio" component = {Portfolio} />
<Route path = "/contact" component = {Contact} />
</nav>
</div>
</HashRouter>
</Menu>
);
}
}
экспорт customnav по умолчанию;
Вот код ошибки:
Cannot read property 'length' of undefined
Я понимаю, что это натянуто, но спасибо за помощь.
@SungKim Я пошел дальше и изменил OP, спасибо
Ваш синтаксис неверен. Вам не нужен Array в начале массива меню. Также используйте правильное объявление переменной с let/const. Например, const Menus = [Menu0, Menu1, ...]
@ Jayce444 Я думаю, что это исправлено. Ничего не отображается, но визуализируется, поэтому мне интересно, нужно ли мне просто отредактировать свой CSS. Большое спасибо. Я слишком привык к ES5
@ Jayce444, как вы думаете, есть хороший способ проверить, работает это или нет? В инструментах разработчика отображается, что меню отображается, но на самом деле я его не вижу.
Вы уже знаете, что рендеринг работает. Звучит как проблема с CSS, хотя сложно сказать. У меня нет опыта работы с этим конкретным модулем.
@ Jayce444 Спасибо за вашу помощь. Это действительно работает, и я возился с css. Заботиться!



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


При использовании Array для создания массива необходимо использовать Array(), а не Array[].
Демо
console.info(Array[1,2,3]);
console.info(Array(1,2,3));
// OR
console.info([1,2,3]);Как вы думаете, есть хороший способ проверить, работает это или нет? В инструментах разработчика отображается, что меню отображается, но на самом деле я его не вижу.
Неправильный синтаксис массива, вы можете просто сделать
import { slide as Menu0 } from 'react-burger-menu';
import { stack as Menu1 } from 'react-burger-menu';
import { elastic as Menu2 } from 'react-burger-menu';
import { bubble as Menu3 } from 'react-burger-menu';
import { push as Menu4 } from 'react-burger-menu';
import { pushRotate as Menu5 } from 'react-burger-menu';
import { scaleDown as Menu6 } from 'react-burger-menu';
import { scaleRotate as Menu7 } from 'react-burger-menu';
import { fallDown as Menu8 } from 'react-burger-menu';
import { reveal as Menu9 } from 'react-burger-menu';
const Menus = [Menu0, Menu1, Menu2, Menu3, Menu4, Menu5, Menu6,
Menu7, Menu8, Menu9];
const Menu = Menus[Math.floor(Math.random() * Menus.length)];
export default Menu;
Есть ли способ проверить это?
@ G.Rose Поскольку вы использовали случайную функцию, вы не можете проверить свой вывод, все зависит от вашего кода. Однако вы можете заглушить метод Math.random, чтобы он всегда получал определенное число, и сравнивал результат с ожидаемым.
Вы бы опубликовали сообщение об ошибке, а также код, который импортирует
Menu?