import React from "react"; import {connect} from 'react-redux' import {View, Text, Button,TouchableHighlight,StyleSheet,Image,TouchableOpacity} from "react-native"; import {changeBtnText} from "../../actions/bi/index"; import YRHttpRequest from "../../utils/network/fetch" import {API} from "../../utils/network/axios/api.config"; import {NativeModules} from 'react-native'; import NavigationUtil from "../navigator/NavigationUtil"; const YRRnBridge = NativeModules.YRRnBridge; class HomeScreen extends React.Component { static navigationOptions = { title: 'DetailsScreen', headerBackTitle:'返回',//设置返回此页面的返回按钮文案,有长度限制 headerLeft:( <TouchableOpacity style={{marginLeft:0,width:50,height:30}} onPress={() => { YRRnBridge.goBack(); }} > <Image style={{marginLeft:20,marginTop:6,width:12,height:20,}} source={{uri: 'uu_back-icon'}} ></Image> </TouchableOpacity> ) } loadData=()=>{ //fetch请求 console.log("loadData():",API.TEST_GET); YRHttpRequest.get(API.TEST_GET).then(res=>{ console.log("res.data=",res); }).catch(err=>{ console.log("res.data=",err); }) //axios请求 // console.log("loadData():",API.TEST_GET); // sendGet({url:API.TEST_GET,params:{ // name:'arison' // }}).then(res=>{ // console.log("res.data=",res); // }).catch(err=>{ // console.log("res.data=",err); // }) } componentDidMount() { //适配iOS侧滑返回 this.viewDidAppear = this.props.navigation.addListener( //类似OC里的 viewDidAppear方法 'didFocus',// 有4个取值 willFocus即将显示、didFocus完成显示、willBlur即将消失、didBlur消失 (obj)=>{ YRRnBridge.gestureEnabled(true); } ) this.viewWillDisappear = this.props.navigation.addListener(//类似OC里的 viewWillDisappear方法 'willBlur', // 有4个取值 willFocus即将显示、didFocus完成显示、willBlur即将消失、didBlur消失 (obj)=>{ YRRnBridge.gestureEnabled(false); } ) } componentWillUnmount() { // 移除监听 this.viewDidAppear.remove(); this.viewWillDisappear.remove(); } render() { const {navigation} = this.props; NavigationUtil.navigation = navigation; return ( <View style={{flex: 1, alignItems: "center", justifyContent: "center"}}> <Text style={{marginBottom: 10}}>Home Screen</Text> <Button title="详情页" onPress={() => { navigation.navigate('Details', {name: '动态的'}); }} /> <Text style={{marginBottom: 10}}>{this.props.btnText}</Text> <Button title="更新文字" onPress={() => { this.props.changeText("我的第一个ReactNative项目!"); }}/> <Button style={{marginBottom: 10}} title="断点调式" onPress={()=>{ for (let i = 0; i < 10; i++) { console.log("i*i=",i*i); } }}/> <TouchableHighlight underlayColor="#FF00FF" activeOpacity={1} style={styles.button} onPress={this.loadData.bind(this)}> <Text style={styles.text} > Touch Here </Text> </TouchableHighlight> <Button title="热更新测试" onPress={() => { NavigationUtil.goPage({name: '热更新'},'CodePushPage'); // navigation.navigate('CodePushPage', {name: '热更新'}); }}/> <Button title="图表测试" onPress={() => { navigation.navigate('EChartsPage', {name: '图表'}); }}/> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', paddingHorizontal: 10 }, button: { alignItems: 'center', backgroundColor: '#DDDDDD', borderRadius:5, padding: 10, margin:10 }, countContainer: { alignItems: 'center', padding: 10 }, countText: { color: '#FF00FF' }, text:{ fontWeight:'600', color:'#FFFFFF' } }) const mapStateToProps = state => ({ btnText:state.pageMainReducer.btnText }) const mapDispatchToProps = dispatch => ({ changeText:(text)=>{ dispatch(changeBtnText(text)); } }) export default connect(mapStateToProps, mapDispatchToProps)(HomeScreen)