1.0.13 • Published 3 years ago

@_themis/router v1.0.13

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

Описание пакета

Очень простой и удобный роутер для приложений, использующих в качестве UI-библиотеки VKUI.

Установка

yarn add @unexp/router

или, используя npm:

npm i @unexp/router

Быстрый старт

import { useStructure } from '@unexp/router'

let App = () => {
  let structure = useStructure({
    panel: 'home'
  })

  return (
    <View activePanel={structure.panel}>
      <Home id='home' />
      <Settings id='settings' />
    </View>
  )
}

ReactDOM.render(<App />, root)

Выглядит довольно просто.

Структура приложения

В примере выше мы познакомились с хуком useStructure. Вот что нужно про него знать:

  • С помощью него определяется структура приложения.
  • Структура приложения может быть определена лишь один раз.

Навигация

Переход на новое состояние

import { useRouter } from '@unexp/router'

let Home = () => {
  let { push } = useRouter()

  return (
    <Panel id='home'>
      <PanelHeader>ВКонтакте</PanelHeader>
      <Button onClick={() => push({ panel: 'settings' })}>
        Перейти к настройкам
      </Button>
    </Panel>
  )
}

С помощью метода push хука useRouter вы можете добавлять новое состояние навигации в историю. В примере выше при нажатии на кнопку пользователь перейдёт на панель с настройками.

Возврат назад

import { useRouter } from '@unexp/router'

let Settings = () => {
  let { back } = useRouter()

  return (
    <Panel id='settings'>
      <PanelHeader left={<PanelHeaderBack onClick={back} />}>
        Настройки
      </PanelHeader>
    </Panel>
  )
}

При вызове метода back происходит возврат на прошлое состояние навигации.

Замена текущего состояния

Иногда может потребоваться заменить текущее состояние навигации на другое. Специально для этого useRouter предоставляет метод replace.

import { useRouter } from '@unexp/router'

let Home = () => {
  let { replace } = useRouter()

  return (
    <Panel id='home'>
      <PanelHeader>ВКонтакте</PanelHeader>
      <Button onClick={() => replace({ panel: 'settings' })}>
        Заменить текущую панель на панель с настройками
      </Button>
    </Panel>
  )
}

API этого метода полностью повторяет API метода push.

Модальные окна

...

1.0.13

3 years ago

1.0.11

3 years ago

1.0.12

3 years ago

1.0.10

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago