成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

react-native完整實(shí)現(xiàn)登錄功能的示例代碼

react native實(shí)現(xiàn)登錄功能,包括ui的封裝、網(wǎng)絡(luò)請求的封裝、導(dǎo)航器的實(shí)現(xiàn)、點(diǎn)擊事件。

10年積累的網(wǎng)站制作、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有南岔免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

demo下載:react-native 完整實(shí)現(xiàn)登錄功能

后臺(tái)如果是springmvc實(shí)現(xiàn)的需要配置上如下代碼

 <!--加入multipart 的解析器,這個(gè)必須配置,一會(huì)在controller里抓取上傳文件時(shí)要用。否則會(huì)報(bào)錯(cuò)。-->
  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <property name="maxUploadSize" value="102400"></property>

    <property name="defaultEncoding" value="utf-8"/><!--屬性:編碼-->

  </bean>

1.實(shí)現(xiàn)的界面

react-native 完整實(shí)現(xiàn)登錄功能的示例代碼

2.完整目錄

react-native 完整實(shí)現(xiàn)登錄功能的示例代碼

3.主界面的代碼實(shí)現(xiàn)

import React, { Component } from 'react';
import {
 ToolbarAndroid,
 AppRegistry,
 StyleSheet,
 Text,
 View,
 Image,
 TextInput,
 TouchableOpacity
} from 'react-native';
import EditView from '../lib/EditView';
import LoginButton from '../lib/LoginButton';
import LoginSuccess from '../ui/LoginSuccess';
import NetUitl from '../lib/NetUtil';
export default class LoginActivity extends Component {
 constructor(props) {
  super(props);
  this.userName = "";
  this.password = "";
 }

 render() {
   return (

  <View style={LoginStyles.loginview}>
   <View  style={{flexDirection: 'row',height:100,marginTop:1,
    justifyContent: 'center',
    alignItems: 'flex-start',}}>
    <Image source={require('../image/login.png')}/>
   </View>
   <View style={{marginTop:80}}>
    <EditView name='輸入用戶名/注冊手機(jī)號' onChangeText={(text) => {
      this.userName = text;
    }}/>
    <EditView name='輸入密碼' onChangeText={(text) => {
      this.password = text;
    }}/>
    <LoginButton name='登錄' onPressCallback={this.onPressCallback}/>
    <Text style={{color:"#4A90E2",textAlign:'center',marginTop:10}} >忘記密碼?</Text>
   </View>
   </View>
  )
 }


 onPressCallback = () => {
  let formData = new FormData();
  formData.append("loginName",this.userName);
  formData.append("pwd",this.password);
  let url = "http://localhost:8080/loginApp";
  NetUitl.postJson(url,formData,(responseText) => {
     alert(responseText);
     this.onLoginSuccess();
  })


 };

 //跳轉(zhuǎn)到第二個(gè)頁面去
  onLoginSuccess(){
   const { navigator } = this.props;
   if (navigator) {
    navigator.push({
     name : 'LoginSuccess',
     component : LoginSuccess,
    });
   }
  }

}

class loginLineView extends Component {
 render() {
  return (
    <Text >
      沒有帳號
     </Text>
  );
 }
}

const LoginStyles = StyleSheet.create({
 loginview: {
  flex: 1,
  padding: 30,
   backgroundColor: '#ffffff',
 },
});

說明:

1.使用了線性布局,從上往下依次Image,EditView,LoginButton,Text

2.EditView和LoginButton 為自定義控件,實(shí)現(xiàn)輸入框,和按鈕的封裝。

4.EditView.js

import React, { Component } from 'react';
import {
 ToolbarAndroid,
 AppRegistry,
 StyleSheet,
 Text,
 View,
 Image,
 TextInput,
 TouchableOpacity
} from 'react-native';
export default class EditView extends Component {
 constructor(props) {
  super(props);
  this.state = {text: ''};
 }

 render() {
  return (
   <View style={LoginStyles.TextInputView}>
    <TextInput style={LoginStyles.TextInput}
     placeholder={this.props.name}
     onChangeText={
      (text) => {
       this.setState({text});
       this.props.onChangeText(text);
      }
    }
    />
    </View>
  );
 }
}


const LoginStyles = StyleSheet.create({
 TextInputView: {
  marginTop: 10,
  height:50,
  backgroundColor: '#ffffff',
  borderRadius:5,
  borderWidth:0.3,
  borderColor:'#000000',
  flexDirection: 'column',
  justifyContent: 'center',
 },

 TextInput: {
  backgroundColor: '#ffffff',
  height:45,
  margin:18,
 },
});

說明:

1.利用TextInput的onChangeText 方法獲取到輸入框中輸入的數(shù)據(jù),在利用EditView 傳入的onChangeText回調(diào)方法,把數(shù)據(jù)回調(diào)出封裝的EditView,在外部獲取到TextInput輸入的數(shù)據(jù)。

5.LoginButton.js

import React, { Component } from 'react';
import {
 ToolbarAndroid,
 AppRegistry,
 StyleSheet,
 Text,
 View,
 Image,
 TextInput,
 TouchableOpacity
} from 'react-native';
export default class LoginButton extends Component {
 constructor(props) {
  super(props);
  this.state = {text: ''};
 }
 render() {
  return (
   <TouchableOpacity onPress={this.props.onPressCallback} style={LoginStyles.loginTextView}>
    <Text style={LoginStyles.loginText} >
      {this.props.name}
    </Text>
   </TouchableOpacity>
  );
 }
}
const LoginStyles = StyleSheet.create({

 loginText: {
  color: '#ffffff',
   fontWeight: 'bold',
   width:30,
 },
 loginTextView: {
  marginTop: 10,
  height:50,
  backgroundColor: '#3281DD',
  borderRadius:5,
  flexDirection: 'row',
  justifyContent: 'center',
  alignItems:'center',
 },
});

說明:

1.利用TouchableOpacity包住Text實(shí)現(xiàn)點(diǎn)擊效果,onPress是點(diǎn)擊時(shí)調(diào)用,當(dāng)點(diǎn)擊時(shí)onPress觸發(fā),調(diào)用外部傳入的onPressCallback 方法實(shí)現(xiàn)觸發(fā)事件在封裝的LoginButton外部定義觸發(fā)的效果。

6.NetUtil.js

let NetUtil = {
 postJson(url, data, callback){
    var fetchOptions = {
     method: 'POST',
     headers: {
      'Accept': 'application/json',
      'Content-Type': 'multipart/form-data;boundary=6ff46e0b6b5148d984f148b6542e5a5d'
     },
     body:data
    };

    fetch(url, fetchOptions)
    .then((response) => response.text())
    .then((responseText) => {
     // callback(JSON.parse(responseText));
      callback(responseText);
    }).done();
 },
}
export default NetUtil;

說明:網(wǎng)絡(luò)方法,依次傳入請求地址,請求參數(shù),成功回調(diào)事件

7.LoginSuccess.js

import React from 'react';
import {
  View,
  Navigator,
  TouchableOpacity,
  ToolbarAndroid,
  Text
} from 'react-native';
export default class LoginSuccess extends React.Component {
  constructor(props){
    super(props);
    this.state = {};

  }
  //回到第一個(gè)頁面去
  onJump(){
    const { navigator } = this.props;
    if (navigator) {
      navigator.pop();
    }
  }

  render(){
    return (

      <View >
        <TouchableOpacity onPress = {this.onJump.bind(this)}>
          <Text> 登錄成功,點(diǎn)擊返回登錄頁面 </Text>
        </TouchableOpacity>
      </View>


    );

  }

}

說明:登錄成功后跳轉(zhuǎn)的界面

8.navigator.js

導(dǎo)航器控制類。利用name,component 實(shí)現(xiàn)導(dǎo)航(可以自己隨便定義命名,只要后面的類中訪問同樣的命名即可,課參考LoginSuccess.js 中的返回功能)

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
 AppRegistry,
 StyleSheet,
 Text,
 View,
 Navigator
} from 'react-native';
import Main from './ui/main';
export default class navigator extends Component {
  constructor(props) {
   super(props);
  }
  render() {
  let defaultName = 'Main';
  let defaultComponent = Main;
  return (
   <Navigator
    initialRoute = {{name : defaultName , component: defaultComponent}}
    configureScene = {(route) => {
     return Navigator.SceneConfigs.VerticalDownSwipeJump;
    }}
    renderScene={(route,navigator) => {
      let Component = route.component;
      return <Component {...route.params} navigator = {navigator} />
    }}
    />
  );
 }

};

9.index.android.js

規(guī)定的類

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */
import React, { Component } from 'react';
import {
 ToolbarAndroid,
 AppRegistry,
 StyleSheet,
 Text,
 View,
 Image,
 TextInput,
 TouchableOpacity
} from 'react-native';
import Navigator from './app/navigator';
AppRegistry.registerComponent('AwesomeProject', () => Navigator);

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

文章標(biāo)題:react-native完整實(shí)現(xiàn)登錄功能的示例代碼
本文網(wǎng)址:http://jinyejixie.com/article26/jjpscg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作網(wǎng)站營銷、軟件開發(fā)響應(yīng)式網(wǎng)站、搜索引擎優(yōu)化、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
荔波县| 抚宁县| 蓬莱市| 凤城市| 耿马| 文化| 揭阳市| 望江县| 榆树市| 望江县| 阜城县| 保定市| 洪雅县| 咸宁市| 宜春市| 伊金霍洛旗| 淮滨县| 新民市| 四会市| 沙湾县| 吉水县| 邮箱| 双柏县| 洪泽县| 盐源县| 连云港市| 阿坝| 衡山县| 麦盖提县| 大冶市| 蒙山县| 彝良县| 清水县| 哈巴河县| 灵山县| 湘乡市| 江陵县| 繁昌县| 宝应县| 闻喜县| 防城港市|