1

package.jsonреагирует-нативную ориентацию слушатель не может прочитать свойство «GetOrientation» неопределенного

{ 
    "name": "MakeItCluster", 
    "version": "0.0.1", 
    "private": true, 
    "scripts": { 
    "start": "node node_modules/react-native/local-cli/cli.js start", 
    "test": "jest" 
    }, 
    "dependencies": { 
    "react": "15.4.1", 
    "react-native": "0.39.2", 
    "react-native-orientation-listener": "0.0.4", 
    "react-native-vector-icons": "^3.0.0" 
    }, 
    "devDependencies": { 
    "babel-jest": "18.0.0", 
    "babel-preset-react-native": "1.9.1", 
    "jest": "18.1.0", 
    "react-test-renderer": "15.4.1" 
    }, 
    "jest": { 
    "preset": "react-native" 
    } 
} 

Компонент:

'use strict'; 

import React from 'react'; 
var Orientation = require('react-native-orientation-listener'); 

var Item = React.createClass({ 
    componentWillMount: function() { 
     this._maintainDimensions(); 
    }, 

    render: function() { 
     // ... 
    }, 

    _maintainDimensions: function() { 
     console.log(Orientation); 
     Orientation.getOrientation(function(err, orientation) { 
      // doing something here 
     }.bind(this)); 
    } 
}); 

module.exports = Item; 

При печати на консоль значения «Ориентация» Я вижу, :

{ 
    addListener:addListener(callback) 
    getOrientation: getOrientation(callback) 
    removeListener: removeListener(listener) 
    __proto__: Object 
} 

Но на следующей строке, когда я называю Orientation.getOrientation(), Ориентация не определена!

ответ

0

Я использую его по-разному, и его работы хорошо для меня, пожалуйста, проверьте код ниже:

import React, { Component } from 'react'; 
import { 
    AppRegistry, 
    StyleSheet, 
    Text, 
    View, 
    AppRegistry 
} from 'react-native'; 
var Orientation = require('react-native-orientation-listener'); 
var or="j"; 
export default class Googleplay extends Component { 
    constructor(props){ 
    super(props); 
    this.state = { or: ''}; 
    } 
    _maintainDimensions() { 
     console.log(Orientation); 
     Orientation.getOrientation(function(err, orientation) { 
      console.warn(err); 
      console.warn(orientation); 
     }.bind(this)); 
    } 
    componentWillMount() { 
     this._maintainDimensions(); 
    } 

    _setOrientation(data) { 

    //console.warn(data.orientation+' "'+data.device+'"'); 
    this.setState({ or: data.orientation}); 
    } 
    componentDidMount(){ 
    Orientation.getOrientation(
    (orientation, device) => { 
     console.warn(orientation, device); 
     this.setState({ or: orientation}); 
    } 
    ); 
    Orientation.addListener(this._setOrientation.bind(this)); 
    } 
    render() { 
    if(this.state.or == "PORTRAIT"){ 
    return (
     <View style={styles.container}> 
     <Text style={styles.welcome}> 
      PORTRAIT 
     </Text> 
     <Text style={styles.instructions}> 
      To get started, edit index.android.js 
     </Text> 
     <Text style={styles.instructions}> 
      Double tap R on your keyboard to reload,{'\n'} 
      Shake or press menu button for dev menu 
     </Text> 
     </View> 
    ); 
    }else{ 
     return (
     <View style={styles.container}> 
      <Text style={styles.welcome}> 
      LANDSCAPE 
      </Text> 
      <Text style={styles.instructions}> 
      To get started, edit index.android.js 
      </Text> 
      <Text style={styles.instructions}> 
      Double tap R on your keyboard to reload,{'\n'} 
      Shake or press menu button for dev menu 
      </Text> 
     </View> 
    ); 
    } 
    } 
} 

const styles = StyleSheet.create({ 
    container: { 
    flex: 1, 
    justifyContent: 'center', 
    alignItems: 'center', 
    backgroundColor: '#F5FCFF', 
    }, 
    welcome: { 
    fontSize: 20, 
    textAlign: 'center', 
    margin: 10, 
    }, 
    instructions: { 
    textAlign: 'center', 
    color: '#333333', 
    marginBottom: 5, 
    }, 
}); 

AppRegistry.registerComponent('Googleplay',() => Googleplay); 
+0

Ваш код не работает. Собственно, какая разница по сравнению с шахтным кодом? –

+0

то, что я хотел показать, это то, что это не проблема с кодом –

+0

BTW Я использую RN 0.36.0 –