Comments (7)
Hi @terryatgithub , in your code sample what does hyperviewRef
refer to? I'm guessing this may be causing problems.
As to your question about supporting question about supporting the Android back button:
I think what is needed is not a custom behavior, but a new trigger. The action you want (navigate
) already exists, but the trigger (back-button-press
) does not exist:
<behavior trigger="back-button-press" action="navigate" href="/home.xml" />
This trigger would need to be added to the HyperRef
class, adding an event listener to componentDidMount
and cleaning up in componentWillUnmount
.
One thing I'm not sure about: currently the functionality of "back" is handled by react-navigation
library. So it's possible that pressing back will always unwind the navigation stack, even if we add other behaviors on top of it. I'm not sure about the best way to address this. @flochtililoch or @ashwinibm any thoughts?
from hyperview.
hi @adamstep ,
- hyperviewRef is a standard react ref that refer to the Hyperview component,
both two methods will fail the same error as above mentioned pic.
const androidBackBehavior = {
action: 'android-back-action',
callback: (element: Element, onUpdate: HvComponentOnUpdate, getRoot: HvGetRoot, updateRoot: HvUpdateRoot) => {
const href = element?.getAttributeNode('action-href')?.nodeValue;
const action = element?.getAttributeNode('action-action')?.nodeValue;
// method 1: error
hyperviewRef.current.onUpdate(href, action, {}, {});
// method 2: the same error too.
onUpdate(href, action, {}, {});
}
};
<Hyperview
ref={hyperviewRef} // <-------------------- _this is the ref_
back={goBack}
closeModal={closeModal}
fetch={(input: any) => {
return fetchWrapper(input, customHeaders);
}}
navigate={navigate}
navigation={navigation}
openModal={openModal}
push={push}
replace={navigation.replace}
formatDate={formatDate}
behaviors={[androidBackBehavior]}
/>
- will there be the same error if use trigger
back-button-press
? - Is there specific schedule to implement this feature? It's a function that will affect the user experience flow.
thanks a lot.
from hyperview.
- will there be the same error if use trigger
back-button-press
?
I don't think there will be an error in this case, because we don't need the ref
passed to the behavior. I believe that's causing the error, the ref gets replaced after every update.
- Is there specific schedule to implement this feature? It's a function that will affect the user experience flow.
I will discuss it with the team tomorrow evening, will have a better idea at that time. Like I said, this implementation is a bit tricky since we need to account for the default behavior of react-navigation
library.
from hyperview.
ok, i see. thank you so much, and looking forward to good news.
from hyperview.
Hi @terryatgithub , in your code sample what does
hyperviewRef
refer to? I'm guessing this may be causing problems.As to your question about supporting question about supporting the Android back button:
I think what is needed is not a custom behavior, but a new trigger. The action you want (navigate
) already exists, but the trigger (back-button-press
) does not exist:<behavior trigger="back-button-press" action="navigate" href="/home.xml" />
This trigger would need to be added to the
HyperRef
class, adding an event listener tocomponentDidMount
and cleaning up incomponentWillUnmount
.One thing I'm not sure about: currently the functionality of "back" is handled by
react-navigation
library. So it's possible that pressing back will always unwind the navigation stack, even if we add other behaviors on top of it. I'm not sure about the best way to address this. @flochtililoch or @ashwinibm any thoughts?
Perhaps we could use the BackHandler provided by react-native to do some custom handling? For example, to disable going back on some screen or going back to the root screen or navigate to a certain screen. May need to watch out for react-navigation
behaviors like you mentioned.
from hyperview.
It's probably better to handle this at the app level. I've created an example on the demo app that creates a wrapper component where we can customize android back handling. It's a simplified example but one can adapt this to check other route params for example.
#272
from hyperview.
@ashwinibm it's a great idea, I will adapt it and try to see how to handle different navigation requirements in different pages.
thanks a lot.
from hyperview.
Related Issues (20)
- Web too ? HOT 3
- Date field value is not always YYYY-MM-DD HOT 1
- Incomplete documentation of Hyperview component HOT 1
- What would be a good way to trigger a tree update but from outside of XML? HOT 3
- Example app: Navigation to home doesn't work. HOT 3
- Example app: Scroll to list item doesn't work HOT 4
- Is _web_ URL routing (and reverse routing) supported? HOT 1
- <Image /> Local URL not working HOT 1
- Support connecting external navigation for screen with undefined navigation parameters HOT 2
- `trigger="visible"` behaviour is different on iOS than on Android when navigating screens using react-navigation HOT 3
- xmldom parserError - How to debug HOT 5
- Document fragments HOT 1
- django-hyperview package HOT 1
- Scroll indicator is shown for `<view trigger="refresh" scroll="true" shows-scroll-indicator="false"/>` HOT 5
- Congratulations on a 1000 stars. HOT 1
- Debounce not working with with `change` tigger. HOT 3
- Style and design systems HOT 1
- TypeScript types do not seem to be published with the NPM package. HOT 6
- Spelling/grammar mistake on hyperview.org HOT 1
- List refresh control does not follow orientation
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hyperview.