问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

reactnative 怎样让虚拟机让的访问地址

发布网友 发布时间:2022-04-20 07:16

我来回答

2个回答

懂视网 时间:2022-04-23 08:17

这次给大家带来React Native实现地址选择器功能,React Native实现地址选择器功能的注意事项有哪些,下面就是实战案例,一起来看一下。

import React, { Component, PropTypes } from 'react';
import {
 ViewPropTypes,
 StyleSheet,
 View,
 TouchableOpacity,
 TouchableNativeFeedback,
 Platform,
 Animated,
 Text
} from 'react-native';
export default class SelectCityTabBar extends Component {
 //属性声名
 static propTypes = {
 goToPage: PropTypes.func,
 activeTab: PropTypes.number,
 tabs: PropTypes.array,
 backgroundColor: PropTypes.string,
 activeTextColor: PropTypes.string,
 inactiveTextColor: PropTypes.string,
 textStyle: Text.propTypes.style,
 tabStyle: ViewPropTypes.style,
 renderTab: PropTypes.func,
 underlineStyle: ViewPropTypes.style,
 };
 //默认属性
 static defaultProps = {
 activeTextColor: '#FA3D4F',
 inactiveTextColor: 'black',
 backgroundColor: null,
 }
 renderTab(name, page, isTabActive, onPressHandler) {
 const { activeTextColor, inactiveTextColor, textStyle, } = this.props;
 const textColor = isTabActive ? activeTextColor : inactiveTextColor;
 const fontWeight = isTabActive ? 'bold' : 'normal';
 const viewStyle = isTabActive ? [styles.tab, { borderBottomWidth: Constant.sizepiderLarge, borderColor: Constant.colorPrimary }] : styles.tab;
 if (Platform.OS !== 'ios') {
 return <TouchableNativeFeedback
 delayPressIn={0}
 background={TouchableNativeFeedback.SelectableBackground()}
 key={name + page}
 accessible={true}
 accessibilityLabel={name}
 accessibilityTraits='button'
 onPress={() => onPressHandler(page)}
 >
 <View style={viewStyle}>
 <Text style={[{ color: textColor, fontWeight, }, textStyle,]}>
 {name}
 </Text>
 </View>
 </TouchableNativeFeedback>
 }
 return <TouchableOpacity
 key={name + page}
 accessible={true}
 accessibilityLabel={name}
 accessibilityTraits='button'
 onPress={() => onPressHandler(page)}
 >
 <View style={viewStyle}>
 <Text style={[{ color: textColor, fontWeight, }, textStyle,]}>
 {name}
 </Text>
 </View>
 </TouchableOpacity>;
 }
 render() {
 return (
 <View style={{ flexDirection: 'row', borderBottomWidth: Constant.sizepiderNormal, borderColor: Constant.colorpider }}>
 {this.props.tabs.map((name, page) => {
 const isTabActive = this.props.activeTab === page;
 const renderTab = this.props.renderTab || this.renderTab;
 return this.renderTab(name, page, isTabActive, this.props.goToPage);
 })}
 </View>
 );
 }
}
const styles = StyleSheet.create({
 tab: {
 alignItems: 'center',
 justifyContent: 'center',
 paddingBottom: 10,
 marginLeft: 10,
 },
 tabs: {
 height: 50,
 flexDirection: 'row',
 justifyContent: 'space-around',
 borderWidth: 1,
 borderTopWidth: 0,
 borderLeftWidth: 0,
 borderRightWidth: 0,
 borderColor: '#ccc',
 },
});

npm react-native-scrollable-tab-view 组件

import React, { Component } from 'react';
import {
 StyleSheet,
 View,
 ScrollView,
 Dimensions,
 TouchableOpacity,
 InteractionManager,
 Platform,
 UIManager,
 Text
} from 'react-native';
import ScrollableTabView from 'react-native-scrollable-tab-view';
import SelectCityTabBar from './SelectCityTabBar'
import AREA_JSON from '../../util/area.json';
const { height, width } = Dimensions.get('window');
export default class AddressSelect extends Component {
 static defaultProps = {
 commitFun: function (value) {
 console.log(value);
 },
 dissmissFun: function () {
 },
 lastAddress: null,
 };
 constructor(props) {
 super(props);
 if (Platform.OS === 'android') {
 UIManager.setLayoutAnimationEnabledExperimental(true)
 }
 const { lastAddress } = props;
 let selectAddress = this.initAddress(lastAddress);
 this.state = {
 selectAddress
 }
 }
 initAddress(lastAddress) {
 let selectAddress = [
 {
 value: null,
 label: null,
 children: AREA_JSON,
 }, {
 value: null,
 label: null,
 children: null,
 }, {
 value: null,
 label: null,
 children: null,
 }];
 let array = null;
 function fun(array, value) {
 for (let item of array) {
 if (item.value + '' === value + '') {
 return item;
 }
 }
 }
 try {
 selectAddress = selectAddress.map((item, index) => {
 let result = fun(array ? array : AREA_JSON, lastAddress[index].value);
 if (result.children) {
 array = result.children;
 }
 return result;
 });
 } catch (e) {
 console.log('-----e-', e);
 }
 return selectAddress
 }
 /**
 * 列表行
 * @param item
 * @param i
 * @returns {XML}
 */
 renderListItem(item, i) {
 let itemStyle = styles.itemStyle;
 let textStyle = styles.itemText;
 let { selectAddress } = this.state;
 if (item.label === selectAddress[i].label) {
 itemStyle = [itemStyle];
 textStyle = [textStyle, { color: 'red' }]
 }
 return (
 <TouchableOpacity
 style={itemStyle}
 key={i + item.label}
 onPress={() => {
 this.pressItem(item, i)
 }}
 >
 <Text style={textStyle}>{item.label}</Text>
 </TouchableOpacity>
 )
 }
 /**
 * 点击列表事件
 * @param item 选中数据
 * @param i 选中行数
 */
 pressItem(item, i) {
 let { selectAddress } = this.state;
 const initObj = {
 value: null,
 label: null,
 children: null,
 }
 let tempIndex = 0;
 if (i === 0) {
 selectAddress[0] = item;
 selectAddress[1] = initObj;
 selectAddress[2] = initObj;
 tempIndex = 1
 } else if (i === 1) {
 selectAddress[1] = item;
 selectAddress[2] = initObj;
 tempIndex = 2
 } else {
 selectAddress[2].value = item.value;
 selectAddress[2].label = item.label;
 tempIndex = 2
 let address = [
 {
 label: selectAddress[0].label,
 value: selectAddress[0].value
 },
 {
 label: selectAddress[1].label,
 value: selectAddress[1].value
 },
 {
 label: selectAddress[2].label,
 value: selectAddress[2].value
 }
 ]
 this.props.commitFun && this.props.commitFun(address);
 this.props.dissmissFun && this.props.dissmissFun();
 return null;
 }
 this.setState({ selectAddress });
 InteractionManager.runAfterInteractions(() => {
 this.tabView.goToPage(tempIndex)
 })
 }
 render() {
 const { selectAddress } = this.state;
 return (
 <View style={styles.container}>
 <View style={{ width: width, height: 40, flexDirection: 'row', justifyContent: 'center', alignItems: 'center', }}>
 <Text>所在地区</Text>
 </View>
 <ScrollableTabView
 ref={(tabView) => {
 this.tabView = tabView;
 }}
 renderTabBar={() => <SelectCityTabBar />}
 >
 {selectAddress.map((obj, i) => {
 let array = (i === 0) ? AREA_JSON : selectAddress[i - 1].children;
 if (array) {
 return (
 <ScrollView
  key={i}
  tabLabel={obj.label || '请选择'}
  style={styles.scrollStyleList}
 >
  {array && array.map((obj2, j) => {
  return this.renderListItem(obj2, i)
  })}
 </ScrollView>
 )
 }
 })}
 </ScrollableTabView>
 </View>
 );
 }
}
const styles = StyleSheet.create({
 container: {
 height: height * 0.6,
 backgroundColor: '#F5FCFF',
 },
 scrollStyleList: {
 width: width,
 marginBottom: Constant.sizeMarginDefault,
 marginTop: Constant.sizeMarginDefault,
 },
 itemStyle: {
 marginTop: 5,
 width: width,
 height: 35,
 marginLeft: Constant.sizeMarginDefault,
 justifyContent: 'center'
 },
 itemText: {
 fontSize: 15,
 color: '#333333'
 },

使用方法:

import React, {Component} from 'react';
import {
 StyleSheet,
 View,
 TouchableOpacity,
 Alert,
 ScrollView,
 ART,
 TouchableHighlight,
 ListView,
 Dimensions,
 Text
} from 'react-native';
import {ReactNavComponent, Widget} from 'rn-yunxi';
import AddressSelect from '../../app-widget/address-select/index'
export default class extends React.Component {
 render() {
 return (
 <TouchableOpacity style={{flex:1, justifyContent:'center', alignItems:'center'}} onPress={() => this.openAddressSelect()}>
 <Text >地址选择</Text>
 </TouchableOpacity>
 );
 }
 openAddressSelect() {
 Widget.Popup.show( // 这边使用自己封装的modal嵌套地址选择器
 <AddressSelect
 commitFun={(area) => this.onSelectArea(area)}
 dissmissFun={() => Widget.Popup.hide()}
 />,
 {
 animationType: 'slide-up', backgroundColor: '#00000000', onMaskClose: () => {
 Widget.Popup.hide()
 }
 })
 }
 onSelectArea = (area) => {
 Log(area)
 }
};

数据类型格式

[
 {
 "value": "110000000000",
 "children": [
 {
 "value": "110100000000",
 "children": [
 {
 "value": "110101000000",
 "label": "东城区"
 },
 {
 "value": "110102000000",
 "label": "西城区"
 },
 {
 "value": "110105000000",
 "label": "朝阳区"
 },
 {
 "value": "110106000000",
 "label": "丰台区"
 },
 {
 "value": "110107000000",
 "label": "石景山区"
 },
 {
 "value": "110108000000",
 "label": "海淀区"
 },
 {
 "value": "110109000000",
 "label": "门头沟区"
 },
 {
 "value": "110111000000",
 "label": "房山区"
 },
 {
 "value": "110112000000",
 "label": "通州区"
 },
 {
 "value": "110113000000",
 "label": "顺义区"
 },
 {
 "value": "110114000000",
 "label": "昌平区"
 },
 {
 "value": "110115000000",
 "label": "大兴区"
 },
 {
 "value": "110116000000",
 "label": "怀柔区"
 },
 {
 "value": "110117000000",
 "label": "平谷区"
 },
 {
 "value": "110118000000",
 "label": "密云区"
 },
 {
 "value": "110119000000",
 "label": "延庆区"
 }
 ],
 "label": "北京市"
 }
 ],
 "label": "北京市"
 }
]

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

React Native实现验证码倒计时功能

AngularJS购物车结算时全选反选z

热心网友 时间:2022-04-23 05:25

首先使用react native编写简单应用碰问题候肯定需要代码进行调试目前react native支持Chrome浏览器内进行调试需要选择Scheme->Run选项Debug,否则模拟器现调试选项 应用设置模拟器运行运行按键Command+D弹调试菜单选项选择Debug in Chrome目前版本支持Chrome进行调试续能支持Safari进行调试调试程跟平写前端调试js代码加断点打志进行调试 些情况Chrome浏览器起作用能其应用插件原候需要其插件禁用进行react native代码调试 要需要真机运行需要jsCodeLocation址改本机ip址比一9二.一陆吧.一.x类真机运行能发布appstore面发布候需要该代码注释 jsCodeLocation = [NSURL URLWithString:@"中国 localhost:吧0吧一/index.ios.bundle"]; 反注释行代码: jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 该应用直真机运行依靠发环境支持 发布候要记选择release版本调试菜单才
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 如何使用xCode运行reactnative程序,打包发布 RN run-android 项目时为什么提示安装APP Debug失败 如何愉快地调试一个 React Native for Android APP 微信拉黑了为什么一点提示都没有? “一毫米”有多长呢? 15丝是多厘米 望远镜手持的目镜15毫米够用吗? 小叶紫檀手串15毫米15粒珠子,重量多少克 15毫米乘18毫米有多大 15毫米x12.5毫米有多大 15厘米厚的雪降水量是多少? 15毫米等于多少像素 15毫米等于多少平方厘米 15毫米等于多少平方厘米/想想办法换算哈?谢谢 15毫米毫米是多长? 一毫米有多长 15毫米的雪有多厚? 直径15亳米是多大 请教一下各位,15mm是多少厘米啊!在线等 15毫米有多长参照物 如何启动reactnative react native安卓考试App 入门IT 行业,该具备哪些技能 react native 除了在虚拟机上r+r 刷新 真机怎样刷新 reactnative支持虚线吗 ipone5 什么时候出?长什么样子? 谷峰手机怎么样?谁用过?用过的来. 如何解决ReactNative中使用Linking调用iOS系统电话... wps如何一键添加序号 ios能向rn发送bool类型吗 reactnative 编写ios应用和android应用代码相同吗 wps表格自动编序号的方法 ios中custornmethod是什么意思 wps表格自动添加序号设置的是30行,那31行怎么自动... wps如何自动添加序号 wps表格怎么自动生成序号 wps表格怎么设置自动添加序号 wps表格怎样快速添加序号 wps表格序号5-1,5-2怎么自动加序号 WPS表格自动添加序号方法步骤图文教程