Giter Club home page Giter Club logo

react-native-native-navigation's People

Contributors

erikpoort avatar jmcur avatar

Stargazers

 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  avatar  avatar  avatar

Forkers

tomatterton

react-native-native-navigation's Issues

Add ability to send key-val information through bridge

These will be available through initialProps in the component.
Values can be strings and numbers, not arrays or objects.
The reason for this is to limit bridge abuse. If you are restricted to simple data, you won't be sending massive data objects through te bridge, which could slow down performance.
Instead, you'll have to save the data in redux for example, accessing it by a passed id.

Prevent double stack views

It seems that you can have nested stacks (uinavigationcontorllers) inside the simulator, but not in a release build on iOS. So there needs to be nested stack validation.

We need to be able to remove / replace navigation

For example, when you have a split-view, you should be able to replace that split-view with a single-view.
Drawer can already replace all sides.
Tabs should be replaceable.
Splitview sides should be replaceable.
Navigation root should be replaceable.
Stack root should be replaceable.

Make shared enums where applicable

For example, the drawer could easily use an enum for defining the side.
So could the splitview with first/second.

These should be defined in the native side and exported to js.

Keep native sitemap in sync with js render methods

When the main Navigation tree, or any Component which provides it's own structure, changes it's tree, this should be reflected on the native side.

For example:
An app with a drawer has Home Component as center view.
The Home Component has a render method, that shows either a stack navigator, or a single login page. This is based on a prop and can be switched at any time.
When switching from stack to login (expired token in background), the native stack should be cleared and the login should be shown.

Add availability to add external nodes

It should be able to add nodes from outside of the framework.
Say your project needs a special type of tab bar, this should be possible without fork.
The user needs the ability to provide their own nodes, both js and native data should be provided implementing certain interfaces.

Organizing internal components

We should come up with a good name for the components.
Currently we have nodes / data / navigators and components.
We should also group these, instead of having a folder with all viewmodels and a separate one with views.

Navigation root should be replaceable.

It is important to be able to reset the root of the entire navigation.
Like having a login view, which replaces the root with a drawer after successful login.

Provide access to navigators by name

When for some reason, you need to nest two stack navigators, you need to be able to call push on either of these navigators.

Options:

  • this.props.<stack_name_or_path>.push()
  • this.props.stack.stack.push()
  • this.props.navigation.stackForID(<stack_path>).push

Lazy load flags

You should be able to set a lazy-load flag.
Example: When initiating the app with a 3 page step, you should be able to specify if all three components should me started, or just the latest, loading the other two when they become visible.

Introduce node structures in page components

It should be possible to specify an app structure inside a page.
For example:
You are in the onboarding, and when done, you push the Home component.
Inside the Home component, in the render method for example, a drawer node with a menu and a stack node is defined.

Check if replaced menu sides are recycled

If you change the center view in the drawer for example, the old view should be properly destroyed.
This issue is more a reminder to check if that is currently done.

Ability to push nodes

It should be possible to push a node to a stack or modal view.
For example pushing a tabbar in a stack view.

Add screenID to uniqueID map to reduce bridged data size

Nesting a lot of nodes can result in really long screenIDs, which are build as breadcrumbs. Screens should be registered with smaller IDs, or rebuild in the native part.
Using smaller IDs takes away some readability, but adds a base for defining userbased path names.
Rebuilding in the native part is prone to error, especially when adding new nodes.

Check update style calls on backgrounded views

If a stack has multiple views, calling updateStyle on all three of them shouldn't have unexpected results.
Imagine three views, with three different titles and js trying to change all of these title to another language. You shouldn't see the first view's title on the third view.

Append to pages / pageMap

You shouldn't have to specify all used pages in the Navigation tag, this causes annoyance during developing. All nodes should be able to provide new pages.

Stack root should be replaceable.

The root should be replaceable.
Possible solutions could be the use of resetTo or a custom solution. The custom solution would be due too android.

Only the root should be replaceable, otherwise you can just pop and push with animation.

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.