- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理两个 PoC。 1)RNRestAPI。 2)RN导航。
在 RNRestAPI 中,index.android.js 和 index.ios.js 都是这样的;
import React, { Component } from 'react';
import {
AppRegistry,
View
} from 'react-native';
import Login from './app/screens/Login/Login';
import About from './app/screens/About/About';
export default class RNRestAPI extends Component {
render() {
return (
<View style={{flex:1}}>
<Login />
</View>
);
}
}
AppRegistry.registerComponent('RNRestAPI', () => RNRestAPI);
Login.js是这样的;
import React, { Component } from 'react';
import {
AppRegistry,
View,
TextInput,
StyleSheet,
Button,
Text,
Alert,
TouchableHighlight,
Platform,
Image,
NetInfo,
ProgressBarAndroid,
ProgressViewIOS
} from 'react-native';
import I18n from '../../resources/strings/i18n';
import Colors from '../../resources/styles/colors';
import Dimensions from '../../resources/styles/dimensions';
import Styles from '../../resources/styles/styles';
import Config from '../../config';
export default class Login extends Component {
constructor() {
super();
this.state = {
username:'',
password:'',
buttonLoginDisabled:false,
isConnected:false
}
// I18n.locale = 'en';
}
componentWillMount() {
NetInfo.addEventListener(
'connectionChange',
this.handleConnectivityChange.bind(this)
);
}
componentWillUnmount() {
NetInfo.removeEventListener('connectionChange', handleConnectivityChange);
}
handleConnectivityChange(connectionInfo) {
console.log('First change, type: ' + connectionInfo.type + ', effectiveType: ' + connectionInfo.effectiveType);
if(connectionInfo.type === 'none') {
this.setState({
isConnected:false,
buttonLoginDisabled:true
});
} else {
this.setState({
isConnected:true,
buttonLoginDisabled:false
});
}
}
onLoginClicked() {
var valid = this.validateLoginForm();
if(valid === true) {
this.setState({
buttonLoginDisabled:true
});
this.makeLoginRequest();
} else {
Alert.alert(I18n.t('dialogLoginInvalidTitle'), I18n.t('dialogLoginInvalidMessage'));
}
}
validateLoginForm() {
if(this.state.username === '') {
return false;
}
if(this.state.password === '') {
return false;
}
return true;
}
makeLoginRequest() {
fetch('http://webapitest', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'MobilePlatformId': Config.MobilePlatformId,
'ApplicationId': Config.ApplicationId,
'Version': '1.9.6'
},
body: JSON.stringify({
Username: this.state.username,
Password: this.state.password
})
})
.then((response) => response.json())
.then((responseJson) => {
console.log(responseJson);
if(responseJson.Token !== null) {
console.log('login successful');
} else {
this.setState({
buttonLoginDisabled:false
});
Alert.alert(I18n.t('dialogInvalidLoginTitle'), I18n.t('dialogInvalidLoginMesage'));
}
})
.catch((error) => {
console.log(eror);
this.setState({
buttonLoginDisabled:false
});
})
}
setUsername(value) {
this.setState({
username:value
});
}
setPassword(value) {
this.setState({
password:value
});
}
onMoreClicked() {
Alert.alert(I18n.t('dialogLearnMoreTitle'), I18n.t('dialogLearnMoreMesage'));
}
getLoginButtonStyle() {
if(this.state.buttonLoginDisabled) {
return styles.buttonLoginDisabled;
} else {
return styles.buttonLogin;
}
}
render() {
return (
<View style={styles.container}>
<View>
<Image source={require('../../resources/images/facilit_logo_welcome.png')}
style={{width:266, height:50, resizeMode:Image.resizeMode.cover}} />
</View>
<View style={styles.wrapperLoginInput}>
<TextInput
keyboardType='default'
placeholder={I18n.t('username')}
returnKeyType='next'
onChangeText={(value) => this.setUsername(value)}
style={Styles.primaryTextInput} />
<TextInput secureTextEntry={true}
placeholder={I18n.t('password')}
onChangeText={(value) => this.setPassword(value)}
style={Styles.primaryTextInput} />
<TouchableHighlight onPress={this.onLoginClicked.bind(this)}
style={{marginTop:(Platform.OS === 'ios') ? 10 : 30}}
underlayColor='#00000000'
disabled={this.state.buttonLoginDisabled}>
<View style={this.getLoginButtonStyle()}>
<Text style={styles.buttonLoginText}>{I18n.t('login')}</Text>
</View>
</TouchableHighlight>
<View style={styles.wrapperLearnMoreLink}>
<TouchableHighlight onPress={this.onMoreClicked.bind(this)}
underlayColor='#00000000'>
<Text style={styles.learnMoreLink}>{I18n.t('learnMore')}</Text>
</TouchableHighlight>
</View>
</View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex:1,
backgroundColor:Colors.primaryBlue,
justifyContent:'center',
alignItems:'center'
},
wrapperLoginInput: {
width:300,
marginTop:100
},
buttonLogin: {
backgroundColor:Colors.primaryYellow,
alignItems:'center',
height:Dimensions.primaryButtonHeight,
justifyContent:'center',
borderRadius:Dimensions.primaryButtonBorderRadius,
borderWidth:Dimensions.primaryButtonBorderWidth,
borderColor:Colors.primaryButtonBorderColor,
},
buttonLoginDisabled: {
backgroundColor:Colors.primaryButtonDisabledGray,
alignItems:'center',
height:Dimensions.primaryButtonHeight,
justifyContent:'center',
borderRadius:Dimensions.primaryButtonBorderRadius,
borderWidth:Dimensions.primaryButtonBorderWidth,
borderColor:Dimensions.primaryButtonBorderColor,
},
buttonLoginText: {
fontSize:Dimensions.primaryButtonFontSize,
color:Colors.primaryButtonFontColor
},
wrapperLearnMoreLink: {
alignItems:'center',
marginTop:150,
},
learnMoreLink: {
color:Colors.secondaryTextColor,
textDecorationLine:'underline'
}
});
AppRegistry.registerComponent('Login', () => Login);
重要的位是 componentWillMount()
和 handleConnectivityChange(connectionInfo)
。它们按预期工作,我的代码处理在线/离线场景。
第二个 PoC(RNNavigate)基本上是 RNRestAPI 的副本,但包含了 react-navigation https://reactnavigation.org/ .我基本上是在用户成功登录我的应用程序后尝试为我的应用程序创建导航。因此我对我的代码做了以下修改。
1)创建App.js
import React, { Component } from 'react';
import {
AppRegistry,
View
} from 'react-native';
import Login from './app/screens/Login/Login';
import About from './app/screens/About/About';
import FacilitySearch from './app/screens/FacilitySearch/FacilitySearch';
import { StackNavigator } from 'react-navigation';
export default class RNNavigate extends Component {
render() {
return (
<View style={{flex : 1}}>
<RNNavigateApp />
</View>
);
}
}
const RNNavigateApp = StackNavigator({
Login : {
screen : Login,
navigationOptions : ({navigation}) => ({
header : null
})
},
About : { screen : About },
FacilitySearch : {
screen : FacilitySearch,
navigationOptions : ({
headerLeft : null
})
}
});
AppRegistry.registerComponent('RNNavigate', () => RNNavigate);
2)修改index.android.js和index.ios.js为;
import './App.js';
Login.js 未受影响。但是 connectionChange
事件不再被触发。非常感谢任何专家的帮助,指导我弄清楚为什么它不再被解雇,或者告诉我我在使用 React Navigate 方面是否做错了什么。
最佳答案
对我来说,事件没有被触发,因为我在添加 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
后没有重启我的 react-native 服务器。在AndroidManifest.xml
.
关闭你的服务器并在它应该启动之后重新启动它。
关于javascript - React Native NetInfo 'connectionChange' 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46399028/
netInfo React Native总是在ios模拟器中返回false NetInfo.isConnected.fetch().then(isConnected => { if (isCo
我在我的应用程序中使用 NetInfo,以检查它是否已连接到互联网。 NetInfo.isConnected.fetch().then( (isConnected) => { console.
我目前正在尝试在我的一个 native react 应用程序中实现网络服务调用并使用 react-native-web-service-handler调用 Get 和 Post Web API。 请看
当我从真实设备上关闭互联网连接时,它没有检测到我处于离线状态,但是当再次上线时,它会将值返回为 true。 import React from 'react'; import { SafeArea
我正在尝试在客户端 React Native 应用程序中实现离线(尚未添加 - 但也是低连接)网络错误弹出消息。 这是我的完整 View 代码: import React, {useState, us
我正在尝试在客户端 React Native 应用程序中实现离线(尚未添加 - 但也是低连接)网络错误弹出消息。 这是我的完整 View 代码: import React, {useState, us
我正在处理两个 PoC。 1)RNRestAPI。 2)RN导航。 在 RNRestAPI 中,index.android.js 和 index.ios.js 都是这样的; import React,
我在我的 react-native v0.49 应用程序上实现了检查互联网。 我正在使用 react-native 的 NetInfo。 当发生任何更改时,我添加 eventListener 它将调用
环境 Expo CLI 3.11.7 环境信息: 系统: 操作系统:Linux 5.0 Ubuntu 18.04.3 LTS(仿生海狸) shell :4.4.20 -/bin/bash 二进制文件:
我正在使用 react native 构建一个应用程序,但它不是仅在 ios 和 Android 中使用 axios 获取数据,它工作正常 当我使用 Netinfo 检查网络状态时,它返回未知 co
我遵循了“HandlerBar Labs”中有关“使用 Redux Persist 保存数据”的教程。在练习应用程序中一切正常,但当我尝试在实际应用程序中使用它时,我收到了该错误。以下是完整的错误消息
我正在使用 react-native-netinfo在我的应用程序中。在 iOS 中,它工作正常。但在 android 中总是返回 true。它没有互联网连接(WiFi 或移动数据)。它仍然返回 tr
我正在使用 Netinfo 检查 android-react-native 上的连接,我收到错误“要在 Android 上使用 NetInfo,请将以下内容添加到您的 AndroidManifest.
我有一个组件来跟踪设备的互联网连接,并在没有连接时显示一个红色的小横幅。一般来说,它工作正常:当您在应用程序中切换互联网时,横幅会出现并消失。 但是,如果您在没有互联网的情况下启动应用,它不会显示横幅
我已经从 更新了 React Native 版本0.57 到 0.59.1 .成功更新后,它会在 react native 信息中引发错误,因此我安装了@react-native-community/
我想在所有组件中测试用户是否已连接到互联网。 我可以在每个组件中使用 NetInfo,但由于我使用的是 redux,我认为使用中间件(?)可以更轻松地完成。 我用过 import { createSt
我们正在以下列方式使用 react-native NetInfo。 export default class NetworkStatus extends React.PureComponent {
当使用 react-native-web 时,NetInfo 适用于 Android 和 iOS,但不适用于 Web。 为了确认为 Web 运行的代码与 Android 相同,我在 component
我是一名优秀的程序员,十分优秀!