Демонстрация базового использования Intro.js
Работая над проектом с открытым исходным кодом (Care Amarillo), я искал способ направлять новых пользователей. Я использовал Intro.js раньше, поэтому искал и нашел для него оболочку React. Я продемонстрирую основное использование этого пакета.
Вот небольшой пример того, чего мы хотим достичь:
Во-первых, давайте создадим пустое приложение для реагирования. Я использую приложение create-реагировать для настройки стандартного кода. Если у вас его еще нет, вы можете обратиться к документации здесь:
Запустите команду в терминале (убедитесь, что вы находитесь в корневом каталоге этого проекта):
npx create-react-app onboarding
Обратите внимание, что «онбординг» — это название, которое я дал приложению React.
После завершения сборки вы можете запустить приложение с помощью этой команды в терминале:
npm start
Вы увидите исходный шаблон следующим образом:
Затем откройте App.js.
Код изначально такой:
import logo from './logo.svg'; import './App.css'; function App() { return ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> <p> Edit <code>src/App.js</code> and save to reload. </p> <a className="App-link" href="https://reactjs.org" target="_blank" rel="noopener noreferrer" > Learn React </a> </header> </div> ); } export default App;
Давайте изменим это на это:
import logo from './logo.svg'; import './App.css'; function App() { return ( <div className="App"> <div id="buttonRow"> <button id="help">Help</button> <button id="about">About</button> <button id="contact">Contact Us</button> </div> </div> ); } export default App;
Обратите внимание, что мы удалили элемент заголовка и добавили ряд кнопок.
Затем откройте файл App.css и добавьте CSS buttonRow:
#buttonRow{ display: flex; justify-content: space-evenly; padding: 8px; }
Далее нам нужно установить реактивный пакет intro.js. Запустите эту команду в своем терминале:
npm i intro.js-react
Снова откройте App.js и добавьте эти два импорта:
import { Steps } from 'intro.js-react'; import React, {useState} from 'react';
Теперь прямо над buttonRow добавьте компонент Intro.js Step:
<Steps enabled={enabled} steps={steps} initialStep={initialStep} onExit={onExit} />
Полный HTML должен быть таким:
<div className="App"> <Steps enabled={enabled} steps={steps} initialStep={initialStep} onExit={onExit} /> <div id="buttonRow"> <button id="help">Help</button> <button id="about">About</button> <button id="contact">Contact Us</button> </div> </div>
Поскольку App.js — это функциональный компонент, мы будем использовать хуки для Enabled, Steps и InitialStep. Добавьте этот код прямо над кодом, который возвращает ваш HTML.
const [enabled,setEnabled] = useState(true) const [initialStep,setInitialStep] = useState(0) const onExit = () => { setEnabled(false) } const steps = [ { element: '#help', intro: 'You can use this button for help', position: 'right', }, { element: '#about', intro: 'You can use this button to get more information', }, { element: '#contact', intro: 'You can use this button to contact us', }, ];
Мы установили для параметра enable значение true, а для InitialStep — значение 0. Это будет автоматически создавать Intro.js всякий раз, когда пользователь открывает этот экран. Функция onExit отключает Intro.js после выхода.
Объект шагов определяет наши шаги. В нашем случае мы используем id, но пакет поддерживает и другие селекторы. Вступление определяет сообщение, которое мы хотим получить для каждого шага.
Перезагрузите страницу, и это должно быть вашим результатом:
Вот полный исходный код App.js:
import './App.css'; import 'intro.js/introjs.css'; import { Steps } from 'intro.js-react'; import React, {useState} from 'react'; function App() { const [enabled,setEnabled] = useState(true); const [initialStep,setInitialStep] = useState(0); const onExit = () => { setEnabled(false) } const steps = [ { element: '#help', intro: 'You can use this button for help', position: 'right', }, { element: '#about', intro: 'You can use this button to get more information', }, { element: '#contact', intro: 'You can use this button to contact us', }, ]; return ( <div className="App"> <Steps enabled={enabled} steps={steps} initialStep={initialStep} onExit={onExit} /> <div id="buttonRow"> <button id="help">Help</button> <button id="about">About</button> <button id="contact">Contact Us</button> </div> </div> ); } export default App;
Спасибо, что нашли время прочитать эту статью!
Присоединяйтесь к Medium по моей реферальной ссылке. Ваш членский взнос напрямую поддерживает Кристофера Коффи и других писателей, которых вы читаете. Вы также получите полный доступ ко всем историям на Medium.
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.