Автор оригинала: Andrico Karoulla.
Выросли, я провел свободное время, делая то, что делали большинство программистов: играли в видеоигры каждый бодрствующий момент. Я любил приключенческих игр и какая точка раковина. Если бы время была Мария Роза, и я был французским, мою артиллерию были игры, такие как царство сердца, ōками и пограничники.
Почему я и другие, проводят столько из нашего свободного времени, выжившие, умирающие, и (так много) шлифовать? Сотни факторов способствуют привлечению участия в привлечении опыта, но тот, который я собираюсь сосредоточиться, – это понятие прогрессирования.
Идея геймификации не нова. Многие популярные приложения (например, ToDoist или Timer Challenge Timer ) включил какую-то схему прогрессирования, чтобы сделать нас, потребители, используют свое приложение, дайте им деньги и передайте наши личные данные. Поэтому я решил пойти в моем способом, чтобы позволить другим сделать это, через красивые навыки деревьев! Примечание. Я ожидаю ни денег, ни данных из тех, кто использует мои навыки деревьев.
Последние несколько недель увидели, что у меня есть трупы, чтобы создать то, что я надеюсь, чтобы быть приятным Plug’n’Play Package React Package, чтобы помочь вам создать захватывающие навыки деревьев. Вы можете проверить это самостоятельно, следуя руководству. Я надеюсь, что это будет бессерденным опытом.
Мы надеемся, что что-то напоминающее дерево навыков ниже:
Возьмите Barter Repo с помощью Git Clone Git@github.com: Adrico1234/Borderlands-Skill- дерево. Гит
Перейдите в каталог и запустите начальный скрипт, Пряжа начать Отказ Дайте сайту Whirl, вы увидите ничего, кроме логотипа и окружающей среды Borderlands.
Красивое мастерство - дерево выставляет три компонента: SkullProvider , SkilltreeGroup и Skilltree компоненты.
SkullProvider : Это не требует реквизитов и не поставляет детей с контекстом дерева навыков. Этот щенок обрабатывает все глобальные данные, связанные с деревом навыков.
SkilltreeGroup : Больше участвует в том, чтобы он мог взять необязательный Тема Недвижимость, где мы можем пройти в каком-то изготовленном на заказ, чтобы наш дерево навыки чувствовать себя очень пограничными. SkilltreeGroup Также используются шаблон детей-AS-A-функций, чтобы дать нам доступ к некоторой функциональности императивных API, таких как сброс дерева навыков, выбранный счетчик навыков и т. Д. Нам не нужно беспокоиться о любом из тех, кто для сферы этой статьи.
Skilltree : Это самая захватывающая из экспорта пакета, если вы не присоска для текста (которые также экспортируются, для всех вас поклонников TS). Skilltree не принимает детей, но требует 3 реквизита: дерево , Название и данные Отказ дерево Должен быть удостоверение личности, которое уникально для каждого дерева навыков, но должно быть настойчивым через пользовательские сеансы, поскольку это используется в качестве ключа для получения и установки данных в локальное хранилище. Я не собираюсь объяснить, что Название Опора, я оставлю вас на эксперименте. данные это смесительный горшок приложения. Вы передадите свою структуру данных дерева навыков, которые приложение будет использовать для рендеринга Красивое мастерство - дерево Отказ Давайте получим настоящую базовое дерево, прежде чем мы перейдем к нашему многокомнатным, многофилитеремным районам.
В App.tsx импортируйте 3 компонента, как так:
Импорт {поставщик навыков, группа деревьев навыков, дерево навыков} из «Красивого мастерства»;
Поместите его под вашим IMG Тег, за пределами контейнера изображений Div, но в пределах внешнего Div. Добавьте SkullProvider проезжая SkilltreeGroup как ребенок. Прежде чем делать то же самое с Skilltree , помните, что как SkilltreeGroup Используется образец функции AS-A-Child, вам нужно сделать функцию, которая возвращает дочерние компоненты. Вернуть один Skilltree и дать ему дерево и а Название пропры Пройти пустой массив в данные пропры Итак, ваш App.tsx Похоже, это выглядит:
function App() {
return (
//
{() => {
return (
)
}}
);
}Перейти к localhost: 3000 Чтобы увидеть приложение работает. Вы должны увидеть логотип, фон и серый прямоугольник. Если вы работаете в любые ошибки, снова пройдите введение и убедитесь, что есть ли ошибка синтаксиса или неправильный импорт.
Далее давайте создадим реальное базовое дерево. Всего 3 предмета, которые движутся в линейной линии. Структура данных для данные Похоже, это выглядит:
type Skill = {
id: string;
icon?: string;
title: string;
tooltip: {
description : string;
},
children: Skill[];
}Каждый навык требует четырех свойств, причем один является необязательным. Вы также должны заметить, что дети Свойство является рекурсивным типом, что означает, что он принимает массив одной и той же структуры данных, которые он использует для того, чтобы сделать детей навыка. Это может идти бесконечно и сделать для некоторых реальных сложных, намотки деревьев. Я создам первый навык для вас, и я доверяю вам продолжением на следующие два предмета.
const data = [{
id: 'first-skill',
title: 'The root node',
tooltip: {
description : "The parent node, all of the descendants will be locked until it's selected",
},
children: [
// rinse and repeat; always repeat.
]}Добавьте вышеуказанный фрагмент на App.tsx Файл и замените пустой массив внутри Skilltree ‘s данные недвижимость с нашими данные определение. Загрузите страницу, и у вас должен быть интерактивный узел. Дайте ему навес и щелчок, и он должен реагировать на ваши действия. Если вещи работают, то я задаю вам создание двух (или более) детских узлов. Экспериментируйте с детьми и длиной брата, чтобы увидеть, с чем вы можете придумать. (Если вы также случитесь, чтобы сломать мой драгоценный пакет, оставьте мне проблему GitHub, чтобы я мог исправить вещи).
Как только вам удобно создать дерево навыков, давайте пойдем вперед и создадим наши навыки навыки пограничности. К счастью, я сделал всю утомительную работу для вас и уже создал структуры данных и накопил изображения.
Вам нужно импортировать три деревья из данные Файл, который можно сделать через
Импорт {движение, гармония, катаклизм} из “./data/data”;
Следующий шаг создает два дополнительных Skilltres рядом с током. Вам нужно будет обернуть их в Реагировать. Фрагмент Как ваш SkilltreeGroup Теперь будет пытаться сделать 3 компонента верхнего уровня. Передайте данные соответственно, и если вы не уверены, я опубликовал фрагмент кода ниже.
Продолжайте и проверьте свой веб-браузер, это должно быть AALLMOOST готов. У нас есть оказанные навыки, но стайлинг чувствует себя немного беззаботно. Это не чувствует себя очень пограничны. К счастью для вас, я обычный Нил Бучанан и подготовил пользовательскую тему. Импортируйте тему и пропустите его до SkilltreeGroup ‘s Тема пропры Тема объекта экспортирует через импортировать тему из './data/Theme'; Отказ Легкий!
После того, как вы сделали вышеизложенное, ознакомьтесь с готовым продуктом. Если вы все еще не удовлетворены стилями, проверьте тему объекта и настройте ее сами, есть куча дополнительных атрибутов, стилей, чьи стили могут быть отрегулированы, поэтому просто загляните в тексты пакета.
Ранее я упоминал, что существует несколько дополнительных свойств и ценностей, которые могут быть использованы для настройки дерева навыков, поэтому имейте беспорядок вокруг себя, и свяжите меня на любые крутые деревья, которые вы создаете. Я хотел бы добавить его в растущий список деревьев, найденных здесь Отказ Вот Пример дерева навыков, который кипятил эту одержимость.
Я надеюсь, что вы понравились звонить с Красивое мастерство - дерево упаковка. Я всегда добавляю новые функции и обновления, так что дайте ей звезду на Github! Вы можете найти онлайн-демонстрацию дерева навыков по окрестностям здесь
Вы можете найти меня в Instagram или Github, если вы хотите общаться в чате кода, музыки или фитнеса!
Оригинал: “https://www.freecodecamp.org/news/create-a-borderlands-style-skill-tree-in-5-minutes/”