基于react native的登录界面demo 超简易教程 redux版
- 本猪说
本猪猪刚学react,也刚看RN,就叫写这个,苦不堪言,搭环境就搭了好久。看网上教程也是改了好多小地方才写完了。本着雷锋精神手把手教你写(假的)。
- 环境以及版本
我用的是安卓模拟器跑的,不过应该ios也适配吧。
这是我的demo的配置依赖的版本
- 项目结构
红色的框框是需要我们自己建立的,因为这个demo的action比较简单,老师叫我把它写在Login.js里面了,所以没有写在action文件里。
- 登录视图 screens/Login.js
import React, {Component} from 'react';
import { StyleSheet,Text, TextInput, View, Image, TouchableOpacity, Dimensions,Alert} from 'react-native';
import {connect} from 'react-redux';var {height, width} = Dimensions.get('window');class Login extends Component {constructor(props) {super(props);}----------onSubmit(userName,password){if(userName===''||password===''){Alert.alert('登陆失败!用户名或密码不能为空'); //弹出提示框} else{// 成功Alert.alert('user: '+userName+' password:'+password);}}// onSubmit()是点击登录按钮后调用的函数,这里的功能比较简单。这里输入不为空都可以,之后的逻辑后面的事了,先让我们取到输入值就ok了----------render() {----------const {userName,password,dispatch} = this.props;//这个是es6的赋值语法。这里可以获取到dispath,是因为我们在下面会用到**connect**封装。当你用React Redux的connect进行封装的时候,connect方法会把dispatch放到props中
----------return (<View style={styles.wrapper}><Imagestyle={{width: 90, height: 90, margin:30, borderRadius:50}}source={{uri:'这里放你可爱的头像'}}/><TextInput style={styles.textInput} placeholder="请输入用户名"**onChangeText={(userName)=>{dispatch({type: 'LOGINUSER', userName:userName})}}**/>----------
组件发出请求,也就是action。通过dispatch把action发出去----------<TextInput style={styles.textInput} placeholder="密码" secureTextEntry={true}**onChangeText={(password)=>{dispatch({type: 'LOGINPASS', password:password})}}**/><TouchableOpacity style={styles.button} activeOpacity={0.6} **onPress={this.onSubmit.bind(this,userName,password)}**><Text style={styles.buttonText}>登录</Text></TouchableOpacity></View>)}
}const styles = StyleSheet.create({wrapper:{paddingTop:40,flex:1,alignItems:'center',// backgroundColor:'#444',backgroundColor:'#e7cbcb'},textInput:{backgroundColor:'#eee',borderColor: 'gray',borderWidth: 2,width:width,height:60,marginBottom:10,textAlign:'center',fontSize:18},button: {backgroundColor: '#808182',// backgroundColor: '#64d0ee',height:60,width:width},buttonText: {color:'#fff',height:60,lineHeight:60,textAlign:'center',fontSize:18,fontWeight:'600'}
});//声明组件需要整个 store 中的哪一部分数据作为自己的 props
function selector(store) {return {userName:store.userName ,password:store.password}
}//connect将store和组件联系在一起
export default connect(selector)(Login);
- 编写renducer reducers/LoginReducer.js
reducer是负责生成state的,所以在大项目中还会用到combineReducers 合并reducer。不过我们这个小,只有一个,就不用了。
ps:我这里后来改了个写法,所以新增了一个文件。
LoginType.js
export const LOGINUSER= 'LOGINUSER';
export const LOGINPASS='LOGINPASS';
reducers/LoginReducer.js (这里还装了个依赖redux-actions)
import {handleActions} from 'redux-actions';
import {LOGINPASS, LOGINUSER} from "./types/LoginType";export default handleActions({[LOGINUSER] (state, action){return {...state,userName:action.userName,}},[LOGINPASS] (state, action){return {...state,password:action.password,}}
}, {userName:'',password:''
})
- 最后App.js 导入我们写好的login组件和reducer
import reducer from './reducers/LoginReducer';
import {Provider} from 'react-redux';
import {createStore} from 'redux';
import React, { Component } from 'react';import Login from './screens/Login';**let store = createStore(reducer);**type Props = {};
export default class App extends Component<Props> {render() {return (**<Provider store={store}><Login /></Provider>**)}
}
- 结语
这样就完成这个demo了。我还在接着完善,现在在用react-navigation写登录跳转,loading啥的,所以也可以继续关注哦,写完了就放上来。
谢谢大噶看完了,一起继续努力!越努力越幸运!
基于react native的登录界面demo 超简易教程 redux版相关推荐
- 基于React Native的移动平台研发实践分享
本文转自微信号EAWorld.扫描下方二维码,关注成功后,回复"普元方法+",将会获得热门课堂免费学习机会! 本文目录: 一.React Native 已经成为了移动前端技术的趋势 ...
- WPF登录界面demo
概述: 此WPF登录界面demo用了自定义按钮样式和添加了窗体阴影,并加入了旋转.缩放等动画实现的,运行效果如下: App.xaml页面代码: <Application x:Class=&quo ...
- php注册登录描述,基于PHP实现用户登录注册功能的详细教程
教程前先给大家看看小编的实现成果吧! 图1: 图2: 图3: 教程: 实现这个功能我们需要五个php文件: login.php (登录界面,如图2) 登录 登录页面 用户名: required=&qu ...
- 基于React、Typescript和Solidity的NFT完整教程
基于React.Typescript和Solidity的NFT完整教程 了解如何使用 React / Next JS.Solidity 和 Pinata(IPFS) 在以太坊上创建 NFT 市场 课程 ...
- 计算机开机界面图片怎么修改,怎么修改Win7开机登录界面壁纸 Win7开机登录界面壁纸修改图文教程...
怎么修改Win7开机登录界面壁纸?想给自己的Win7电脑开机登录界面换个个性的背景图片吗?长时间面对电脑默认的开机登录界面是不是感觉很烦,想给电脑换个开机登录界面背景,但又不知道怎么换?今天小编就教大 ...
- 基于 React Native 的 58 同城 App 开发实践
作者简介: 彭飞,58 同城 iOS 客户端架构师.专注于新技术的研发,主要负责 App 端组件化架构以及性能优化,并已推广 React Native 在 58 同城 App 中业务场景的应用.在 M ...
- 基于React Native和Ethers.js的电子钱包(三):Ethers.js
之前在学Solidity的时候知道了以太坊提供了一个JavaScript API--Web3.js--对以太坊进行API调用的工具包.但最近做RN的时候又发现了另外一种API--Ethers.js 在 ...
- 基于React Native和Ethers.js的电子钱包(二):路由和导航
导航,即Navigator,app的功能入口: 路由,即Router,连接app各个功能的桥梁: RN里的导航和路由需要添加react-navigation依赖 如果你是强迫症,可以加上latest注 ...
- Kivy App开发之登录界面Demo
登录界面是根据个人设想简单设计的,效果如下: 代码如下,新建login.kv <LoginPage>:FloatLayout:canvas.before:Rectangle:size:se ...
最新文章
- Visual Studio 15.8 Preview 3支持多点编辑功能
- kettle spoon中“表输入”到“表输出”的乱码问题
- copyproperties爆红_BeanUtils.copyProperties复制失败探究
- JZOJ 5406. 【NOIP2017提高A组模拟10.10】Tree
- boost::adaptors::type_erased相关的测试程序
- NetBeans Weekly News - Issue # 446 - Jul 20, 2010
- 很好的开源项目ranet-uilibrary-olap
- Mac 下安装配置 Python 开发环境
- JAVA中的toString()方法的用法
- python函数作用域与闭包_python函数名称空间与作用域、闭包
- oracle nls_lang gbk,Oracle客户端NLS_LANG参数的设置详解
- 【Linux命令】nm 查看动态库和静态库中的符号
- linux切换用户无法加载变量,Linux 中用户切换:su 和 su- 的使用 环境变量详解
- Final Project Proposal ——陈稳霖
- canvas绘制流程图
- LTE下行物理层传输机制(9)-集中式和分布式资源映射
- 重心法选址迭代matlab,配送中心重心法选址的研究
- 使用mergeAssets对Android的assets文件在构建的时候进行修改处理
- spring基于注解的AOP配置 中的环绕通知 步骤写法
- win10计算机怎么打开方式,Win10如何还原打开方式?还原打开方式的方法
热门文章
- 如何让控件span的id调用ajax_微服务架构之「 调用链监控 」
- Android开发中反编译时出现Unsupported major.minor version 51.0错误的问题
- java线程睡眠一分钟_Java中的TimerTimerTask和线程睡眠
- java压测请求线程数_程序员撕开京东 618 大促压测的另一面 | 原力计划
- mysql怎么实现事务序列化_MySQL 架构 - 事务处理
- linux csr蓝牙驱动,csr4.0蓝牙适配器驱动下载
- win7系统怎么样在计算机里找桌面,如何在64位win7电脑中创建一个“显示桌面”的快捷方式...
- 现代操作系统: 第八章 多处理机系统
- .net framework开发winform_这个Winform的UI库也太全了!四十多个控件都在这一个项目里了...
- 自动化监控--zabbix中的邮件报警通知详解