So I can use the onEnter/onExit method at the root of my app in the router definitions and it works perfectly fine:
<Scene key="arena" hideNavBar={true} onEnter={() => console.log("Entered")} component={ArenaPage} />
Is there any way I can do this inside the component itself so that I can update the local state??
export default class ArenaPage extends Component {
onEnter () {
this.setState(...)
}
// Render blah blah blah...
}
If not possible, Is there anyway to trigger componentWillUnmount when navigating away from Scene (Actions.[key])
Please check latest react-native-router-flux:beta.27
, now you can define onEnter, onExit methods as your react component methods.
class Home extends Component {
static onEnter() {
console.log('On Focus Enter')
};
static onExit() {
console.log('On Focus Exit')
}
}
Simple use componentWillUnmount, in the arenaPage component.
componentWillUnmount() {
// add your code here.
}
Because that will run when navigation away from the component. I am using it to remove error messages. And that works.
You can use onEnter
and onExit
methods to get the result you want. And in turn can access this
like so.
import { Actions } from 'react-native-router-flux'
class Home extends Component {
static onEnter() {
// homeSceneKey needs to be the same key that you use to configure the Scene
Actions.refs.homeSceneKey.getWrappedInstance().myFunction()
};
myFunction = () => {
// have access to this (props and state) here
this.blah = "what ever you want to do"
}
}
Hope this helps
来源:https://stackoverflow.com/questions/47573777/onenter-onexit-method-in-react-native-component-react-native-router-flux