Abdennacer Lachiheb
Abdennacer Lachiheb

Reputation: 4888

React native detect screen rotation

I'm using onLayout to detect screen orientation and it's working fine inside my root view, but when I implemented inside the drawer it didn't work, any reason why this happens ?

code :

import Drawer from 'react-native-drawer'
  ...
onLayout(e) {
   console.log('onLayout');
}
<Drawer  onLayout={this.onLayout}

It didn't log any thing when orientation changed!

Upvotes: 0

Views: 2024

Answers (1)

Brendan
Brendan

Reputation: 938

This is because the Drawer component doesn't take onLayout as a prop. You can see in the source code that the rendered View does use onLayout, but it's not pulling from something like this.props.onLayout.

I'm not exactly sure what you're looking to do, but maybe this issue will help you. As it shows, you can pass a function into openDrawerOffset instead of an integer or a ratio in order to be a little more dynamic with how you set your offset:

openDrawerOffset={(viewport) => {
    if (viewport.width < 400) {
        return viewport.width * 0.1;
    }
    return viewport.width - 400;
}}

You might also benefit from the Event handlers that react-native-drawer has to offer.

Upvotes: 1

Related Questions