[react-native] 08 Image + TextInput 组件(登录注册铺垫)

Image 组件

作用:加载图片

加载方式:

  • 本地路径
  • 图片的URL地址
  • 图片的Base64字符串

导入 组件

import {Text, View, ScrollView, StyleSheet, Image} from 'react-native'

js 复制代码
//image组件
<Image  
    style={[styles.itemImg]}  
    source={require('../image/demo_pic.jpeg')}  
/>
js 复制代码
//添加样式
const styles = StyleSheet.create({  
    container:{  
        flex:1,  
        justifyContent:'center',  
        alignItems:'center'  
    },  

    itemImg:{  
        height:200,  
        width:Dimensions.get('window').width,  
        marginVertical:20  
    }  
})

TextInput 组件

导入组件

import {Text, View, ScrollView, StyleSheet, TextInput, Dimensions} from 'react-native'

调用组件

js 复制代码
// 调用组件
<View style={[styles.container]}>  
    <TextInput  
    style={[styles.input]}  
    />  
</View>
js 复制代码
//添加样式
container:{  
    flex:1,  
    justifyContent:'center',  
    alignItems:'center'  
},  
  
input:{  
    width:Dimensions.get('window').width,  
    margin:10,  
    borderWidth:1,  
    borderColor:'red',  
    paddingHorizontal:5  
}

添加 placeholder 和 按钮

js 复制代码
<TextInput  
    style={[styles.input]}  
    placeholder="请输入用户名"  
/>  
  
<View style={[styles.btn]}>  
    <Button title="登录" onPress={this.doLogin}/>  
</View>

添加构造函数 和 doLogin 函数

js 复制代码
constructor(){  
    super()  

    this.state = {username:''}  
}  
  
  
doLogin = () => {alert(this.state.username)}

添加 btn 样式

js 复制代码
btn:{  
    margin:10,  
    width:Dimensions.get('window').width -20,  
}

效果图如下:

获取用户名

js 复制代码
<TextInput  
    style={[styles.input]}  
    placeholder="请输入用户名"  
    value={this.state.username}  
    onChangeText={( val ) => {  
        this.setState({  
        username : val  
    })}}  
/>

获取密码

添加密码进 state

js 复制代码
constructor(){  
    super()  

    this.state = {username:'', password:''}  
}

添加一个新的 TextInput 组件

js 复制代码
<TextInput  
    style={[styles.input]}  
    placeholder="请输入密码"  
    value={this.state.password}  
    secureTextEntry={true}  
    onChangeText={  
        (val) => {  
            this.setState({ password:val})  
        }  
    }  
/>

不显示输入文本 --->secureTextEntry={true}

效果如图

默认键盘格式

js 复制代码
<TextInput  
    style={[styles.input]}  
    placeholder="请输入你的手机号"  
    keyboardType="number-pad"  
/>

这里需要注意keyboardType="number-pad" 的用法

js 复制代码
//文本域
<TextInput  
    style={[styles.input]}  
    placeholder="请输入自我介绍(5行)"  
    multiline={true}  
    numberOfLines={5}  
    textAlignVertical="top"
/>

全部代码

js 复制代码
import React, {Component} from 'react'  
import {Text, View, ScrollView, StyleSheet, TextInput, Dimensions, Button} from 'react-native'  
  
export default class FlexDirection extends Component{  
  
constructor(){  
super()  
  
this.state = {username:'', password:''}  
}  
  
  
doLogin = () => {alert(this.state.username + ' ' + this.state.password)}  
render(){  
return (  
<View style={[styles.container]}>  
<TextInput  
style={[styles.input]}  
placeholder="请输入用户名"  
value={this.state.username}  
onChangeText={( val ) => {  
this.setState({  
username : val  
})}}  
/>  
  
  
<TextInput  
style={[styles.input]}  
placeholder="请输入密码"  
value={this.state.password}  
secureTextEntry={true}  
onChangeText={  
(val) => {  
this.setState({ password:val})  
}  
}  
/>  
  
  
  
<TextInput  
style={[styles.input]}  
placeholder="请输入你的手机号"  
keyboardType="number-pad"  
/>  
  
  
<TextInput  
style={[styles.input]}  
placeholder="请输入自我介绍(5行)"  
multiline={true}  
numberOfLines={5}  
textAlignVertical="top"  
/>  
  
<View style={[styles.btn]}>  
<Button title="登录" onPress={this.doLogin}/>  
</View>  
  
  
  
</View>  
)  
}  
}  
  
const styles = StyleSheet.create({  
container:{  
flex:1,  
justifyContent:'center',  
alignItems:'center'  
},  
  
input:{  
width:Dimensions.get('window').width -20,  
margin:10,  
borderWidth:1,  
borderColor:'red',  
paddingHorizontal:5  
},  
  
btn:{  
margin:10,  
width:Dimensions.get('window').width -20,  
}  
})
相关推荐
MXN_小南学前端21 小时前
Vue3 + Spring Boot 工单系统实战:用户反馈和客服处理的完整闭环(提供gitHub仓库地址)
前端·javascript·spring boot·后端·开源·github
轮子大叔21 小时前
CSS基础入门
前端·css
踩着两条虫21 小时前
强强联合!VTJ.PRO 正式接入 DeepSeek V4,AI 编码能力再跃升
前端·vue.js·ai编程
Lily.C21 小时前
DOMPurify 前端富文本 XSS 防护使用指南
前端
一叶渡江1 天前
深挖 iOS 16 以下 flex column-reverse 滚动失效问题
前端
众创岛1 天前
回调函数、闭包概念、场景及python实战
前端
得想办法娶到那个女人1 天前
项目中 TypeScript 类型推导 极简实战总结
前端·javascript·typescript
Beginner x_u1 天前
前端八股整理(Vue 02)|组件通信、生命周期、v-if 与 v-show
前端·javascript·vue.js
一颗青果1 天前
Cookie 与 Session 超详细讲解
服务器·前端·github
zs宝来了1 天前
React 18 并发模式:Fiber 架构与时间切片
前端·javascript·框架