After push from another screen, my action screen have this:
...
static get options() {
return {
topBar: {
title: {
title: 'Testing static options',
},
},
};
}
...
This not work, but... if this props has passed on Navigation.push(...) works fine.
Another issue is, this.props.componentId is undefined.
Not sure if it's an issue but it's supposed to be static options() not static get options()... Not sure it would make any difference though.
change title to text
title: {
text: 'Testing static options',
}
I did a mistake putting in title inside title, when i opened this post.
static options() {
return {
topBar: {
title: {
text: 'Testing static options',
},
},
};
}
Not Working.
static get options() {
return {
topBar: {
title: {
text: 'Testing static options',
},
},
};
}
Not working too.
change static get options() to static options(props)
@guyca not working too.
Well, you can take a look at the playground app - it's clearly working :)
Perhaps you'll notice something you're missing.
Perhaps you're component is wrapped with a HOC - static options don't propagate in the HOC chain
@guyca I have the same problem of the static options not working. You mentioned that having a HOC prevents the static chain. Is there another way to achieve an options override per screen basis?
You could use this library. I am also using HOC to wrap my screens and using this allow me to use static options in the screens.
@jinshin1013 Awesome, I'll give that a shot!
For anyone still having problems with this, your static methods can be copied into your higher component like so:
const withHoc = (Component, ...props) => {
class MyHOCComponent extends React.Component {
...
render(){
...
}
}
MyHOCComponent.options = Component.options;
return MyHOCComponent;
}
Another option would be to use hoist-non-react-statics, but if you don't want to add an extra dependancy then just do it manually like above :)
to anyone else who comes across this issue and is still struggling, here is the workaround that I came up with that gets me to be able to preserve my static options along with registerComponent and redux
const wrapWithProvider = (Component) => () => {
// when react-native-navigation is doing its introspection to determine the options it will be inspecting this SFC
const wrapped = (props) => <Provider store={store}><Component {...props} /></Provider>
wrapped.options = Component.options
return wrapped
}
Navigation.registerComponent('MyScreenComp', wrapWithProvider(MyScreenComp), () => MyScreenComp)
change static get options() to static options(passProps)works for me
Most helpful comment
to anyone else who comes across this issue and is still struggling, here is the workaround that I came up with that gets me to be able to preserve my static options along with registerComponent and redux