Giter VIP home page Giter VIP logo

vk-mini-app-boilerplate's People

Contributors

isa1vatore avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

vk-mini-app-boilerplate's Issues

Не сохраняет скролл в панельке групп

Если проскроллить группы, а потом перейти на другой таб и вернуться обратно, скролл групп не сохранится (думаю, это как-то связано с недавнимим обновлениями скролла)

Упрощение работы с window.history

Обратил внимание, что в роутере используется своеобразный хак window.history.pushState(null, null); возможно проще и чище использовать чуть другой хак:

// Чистим первоначальное состояние
window.history.replaceState({}, '', '#init');
// Добавляем вторую запись в историю
window.history.pushState({}, '', '#router');

window.addEventListener('popstate', (event) => {
  // После нажатия кнопки назад (#init), возвращаем историю на вторую запись
  window.history.pushState({}, '', '#router-back');
  goBack('Android');
});

Соответственно у нас всегда 2 записи в истории и мы спокойно обрабатываем нажатие кнопки назад не засоряя историю.

В этом подходе из самого роутера можно будет убрать все вызовы pushState.

Еще полезная и прикольная фитча (просьба)

Опять по твоему желанию)

Вертикальный скролл сохраняет, но нет API для сохранения горизонтального скролла внутренних компонентов. А было бы удобно) Ну то есть onscroll мы реализует сами, а сохранение происходит в основном storage где-нибудь в componentScrolls[componentId].(x,y)

БАГ: Вечный спиннер в панели с группами

Как воспроизвести:

  1. переходим по кнопки "список моих групп"
  2. сразу же кликаем по системной кнопке назад (андройд)
  3. нас вернуло на предыдущую панель (окошко с получением токена показаться не успело)
  4. переходим по кнопки "список моих групп" и видим вечный спиннер

Девайс: Honor 8x

И еще, мне кажется, что можно улучшить обработку события GO_BACK, в случае, если в popout установлен . Так как при спиннере весь интерфейс приложения блокируется, кроме системной кнопки назад на андройде, надо либо блокировать и ее (опять делать window.history.pushState(null, null) если показан спиннер) или же скрывать спиннер и делать дополнительный переход назад, так как нелогично просто скрыть спиннер при клике назад.

P.S. Класная репа, если у нее будет будущие, это будет супер))

Было бы круто если бы ты это добавил из коробки

Этот реп - уже находка, но мне кажется тут не хватает примера как сохранить состояние форм при переключении через setStory. Панели сохраняет, скролл сохраняет и т.д, но вот формы не сохраняет) Чисто на свое усмотрение добавь, если хочешь

Для HeaderContext не хватает нативных "возвратов".

Я наверное уже задалбывать начинаю)

Есть элемент HeaderContext, хотелось бы видеть реализацию открытия его из апишки, а также поддержку закрытия с помощью аппаратных кнопок "назад"

Проверка на action.payload.from === 'Android' не дает возвращаться назад при cross-tab навигации на iOS

В некоторых случаях в приложении необходимо перейти из панели на одной табе в панель на другой табе. Это можно сделать с помощью this.props.setStoty(“more”, “more”);. Однако, если мы открываем приложение и сразу переходим на панель в другой табе и хотим вернуться назад с помощью this.props.goBack(), то из-за этой проверки, на iOS это работать не будет.

Я попробовал отключить эту проверку на Android и не заметил каких-либо проблем с навигацией в приложении. Не думаю, что эта проверка нужна.

Некорректная анимация перехода панелей в режиме "модальные окна"

Profile-20200124T202648

Проблема в том, что при переходе из одной панели одного view в панель другого view, activePanel меняется для обоих.

В примере из официальной документации такого эфекта не происходит т.к у каждой View всегда один и тот же activePanel

<Root activeView={this.state.activeView}>
        <View activePanel="panel1.1" id="view1">
          <Panel id="panel1.1">
            <PanelHeader>View 1</PanelHeader>
            <Group>
              <CellButton onClick={ () => this.setState({ activeView: 'view2' }) }>
                Open View 2
              </CellButton>
            </Group>
          </Panel>
        </View>
        <View header activePanel="panel2.1" id="view2">
          <Panel id="panel2.1">
            <PanelHeader>View 2</PanelHeader>
            <Group>
              <CellButton onClick={ () => this.setState({ activeView: 'view1' }) }>
                Back to View 1
              </CellButton>
            </Group>
          </Panel>
        </View>
      </Root>

Возможно придется создавать доп. хранилище активных панелей или что-нибудь ещё

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.