1. 程式人生 > >《React-Native系列》4、表單介面程式碼編寫

《React-Native系列》4、表單介面程式碼編寫

今天就開始投入到RN專案了,做後端出生,寫Android和iOS確實有點勉強,不過還是要把這段經歷記錄下來。

要實現的功能介面如下:


這個是最簡單的Form表單,第一步實現介面吧,不管點選效果,不管篩選控制元件... 

思路:

我把這幾類控制元件分為了3類:

1、帶頭像的一行抽取成一個元件

2、帶輸入框 TextInput的抽象成一個元件

3、帶選擇項的抽取成一個元件

首頁直接引用這3個元件

首頁程式碼:

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

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TextInput
} from 'react-native';

import TextInputWidget from './TextInputWidget.js';
import TextTipsWidget from './TextTipsWidget';
import TextImageWidget from './TextImageWidget.js';


class Demo extends Component {

  constructor(props){
    super(props);
  }

  render() {
    return (
      <View style={styles.container}>
        <TextImageWidget
          title='* 頭像' />

        <TextInputWidget
          title='* 暱稱'
          placeholder='請輸使用您的真實姓名' />

        <TextTipsWidget
          title='* 性別' tips='請選擇' onPress={this.showSex.bind(this)}/>

        <TextTipsWidget
            title='* 生日' tips='請選擇'/>

        <View style={{height:3}}/>

        <TextTipsWidget
            title='  學歷' tips='請選擇'/>

        <TextInputWidget
          title='  院校'
          placeholder='請填寫畢業/就讀院校' />

        <TextInputWidget
          title='  專業'
          placeholder='請填寫您的專業' />

        <TextTipsWidget
            title='* 身份' tips='請選擇您的身份'/>

        <TextTipsWidget
            title='* 教齡' tips='請選擇您的教齡'/>
      </View>
    );
  }

  //todo  彈出選擇 性別控制元件
  showSex(){

    alert('1');
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop:20, //去除狀態列圖示
    backgroundColor: 'gray',
  },
});

AppRegistry.registerComponent('Demo', () => Demo);

帶頭像的元件:TextTipsWidget
import React, { Component } from 'react';
var {
  StyleSheet,
  View,
  Text,
  Image,
  TextInput,
  PixelRatio,
  Dimensions
} = require('react-native')


var screenWidth = Dimensions.get('window').width;


export default class TextImageWidget extends Component{

    constructor(props) {
      super(props);
    }

  _renderRow() {
    return (
      <View style={styles.rowContainer}  >
        <View style={styles.row}>
          <Text
            numberOfLines={1}
            style={styles.textInputTitle} >
            {this.props.title}
          </Text>
          <View style={styles.textImage}>
            <Image source={require('./img/defailHead.png')} style={styles.image} />
          </View>
          <View style={styles.rightArrow}>
            <Image source={require('./img/rightArrow.png')}  />
          </View>
        </View>
      </View>
    );

  }

  render() {
    return this._renderRow();
  }
}

const styles = StyleSheet.create({
    rowContainer: {
      backgroundColor: '#FFF',
      width:screenWidth,
    },
    row: {
      flexDirection: 'row',
      height: 44,
      alignItems: 'center',
      marginRight: 15,
      marginLeft: 15,
      //paddingTop:15,
      borderBottomWidth: 0.5 / PixelRatio.get(),
      borderColor:'gray',//需要標色

    },
    textInputTitle: {
      width: 80,
      fontSize: 13,
      //color: '#333',
      //backgroundColor: 'red',
    },
    textImage: {
      flex: 1,
      height: 44,// @todo should be changed if underlined
      justifyContent:'flex-end',
      flexDirection: 'row',

    },
    image:{
      width:38,
      height:38,
      backgroundColor:'gray',
      borderRadius: 19,
    },
    rightArrow:{
      paddingLeft:10,
      //backgroundColor:'red',

    }

  });

由於另外兩個元件和TextImageWidget類似,所以就不貼原始碼了。

這個Demo介面寫的很粗糙,只是實現了功能,還有需要優化的地方:

1、* 號的處理

2、元件封裝的不徹底,通用性不夠

大家有什麼好建議,可以留言。

相關推薦

React-Native系列4介面程式碼編寫

今天就開始投入到RN專案了,做後端出生,寫Android和iOS確實有點勉強,不過還是要把這段經歷記錄下來。 要實現的功能介面如下: 這個是最簡單的Form表單,第一步實現介面吧,不管點選效果,不管篩選控制元件...  思路: 我把這幾類控制元件分為了3類: 1、帶頭

react+antd系列之Form(2):格式限制驗證

格式限制 antd中表單的功能很多,下面就為大家整理了一下antd中常用的幾種表單輸入格式驗證: 1. 輸入框不能為空限制,如下: {getFieldDecorator('name', { rules: [{ require

react+antd系列之Form(1):新增與刪除

在用antd的時候,我們如果要對錶單進行新增和刪除該怎麼弄呢,如下: import { connect } from 'dva'; import { Form, Input, Button } from 'antd'; import styles from './eg1.css';

react-native系列(4)入門篇:在VSCode中配置ESLint(程式碼檢測工具)

ESLint是一套javascript程式碼檢測工具。要記住,程式碼也是寫給人看的,所以一定要注意程式碼的編寫規範。ESLint可以根據自己設定的規則實現對程式碼的檢測,從而規範了程式碼的風格。本篇內容主要介紹如何在VSCode中使用ESLint。 ESLint的官網地址是:https://

Angular2學習筆記.4相關,雙向資料繫結,HeroForm

開始 本次我們將會學會如何用Angular建立表單、two-way data binding(雙向資料繫結)、change tracking(檢測變化)、validation(驗證) 和 error handling(錯誤處理)等功能以及ngModel、ngC

React-Native系列》3RN與native交互之CallbackPromise

pan resolv str string callback 多次調用 modules 函數 等待 接著上一篇《React-Native系列》RN與native交互與數據傳遞,我們接下來研究另外的兩種RN與Native交互的機制 一、Callback機制 首先Calllba

html-4, form 輸入傳文件多選下拉菜文本描述重置submit按鈕限制輸入

part row man head 密碼 文本 inpu set 跳轉 <!-- form HTTP協議 action:提交的服務器網址 method:get(默認)| post(應用:

React-Native系列》24 結合Demo學習Redux框架

8月的最後一天了,那就打響最後一炮吧! 我們介紹了Flux框架,我們打算在接下來的專案裡使用Redux框架,這兩天簡單學習了下Redux。打算結合一個Demo來講解。 還是先來說說概念吧。 Redux 三個基本原則 單一資料來源 整個應用的 state 被儲存在一棵 obj

React-Native系列》26 ReactNative實現圖片上傳功能

在檢視ReactNative的官方文件的時候,你會發現其實Fackbook是沒有提供圖片上傳功能的。如果我們的專案裡需要使用圖片上傳(用JS 實現圖片上傳),那我們有沒有什麼辦法呢?解決方案:利用FormData物件,你可以使用一系列的鍵值對來模擬一個完整的表單,然後使用XM

React-Native系列》15 RN之可觸控元件

今天,我們來看下ReactNative提供的可觸控元件。 分別為:TouchableHighlight、TouchableNativeFeedback、TouchableOpacity、TouchableWithoutFeedback。 TouchableWithoutFe

REACT NATIVE 系列教程之十一】外掛的安裝使用與更新(示例:REACT-NATIVE-TAB-NAVIGATOR)

本篇主要來詳細介紹如何安裝、升級外掛及講解一個react-native-tab-navigator的示例。本文舉例使用的外掛:react-native-tab-navigator ,選項卡形式的導航1. 通過  https://www.npmjs.com 找到我們想使用的外掛, 搜尋:react-native

React-Native系列》21 解決RN在Android下不支援gif問題

由於RN在Android平臺上不支援gif格式的圖片,今天介紹下我們是怎麼處理這個問題的。 先來看看我們需要實現的效果,這是一張gif圖片,當我們列表上拉載入下一頁的時候需要使用這個效果,如下圖: 我們的解決方案是:將gif切成15張png的圖片,暫且命名為loadin

React-Native系列》40 ReactNative之bundle檔案瘦身

【背景】目前,我們的app中採用Native+RN的混合模式開發,每個由RN開發的頁面,頁面的載入都是載入的一個Bundle檔案,而一個Bundle檔案的大小為500-600Kb。在沒有內建bundle檔案的情況下,使用者想要使用所有由RN開發的功能,需要下載 n* 500

React-Native系列》33 鍵盤遮擋問題處理

最近在專案中,使用TextInput元件的時候,發現鍵盤彈出的時候,遮蓋了表單。諮詢了下做iOS的同學,他們的處理是計算鍵盤的高度和當前輸入域的位置,將介面向上移動一段距離。那在ReactNative中是否也可以有類似的處理方法呢?答案是肯定的,我們使用ScrollVIew的

3React Native實戰——實現QQ的登入介面

今天記錄的是使用React Native實現QQ的登入介面,如果不瞭解React Native,請看React Native中文網站:http://reactnative.cn/ 下面是一張手機QQ的登入介面截圖: 下面是用React Native實現的類似上圖的登入效果

React 事件對象鍵盤事件事件ref獲取dom節點react實現類似Vue雙向數據綁定

nbsp 產生 影響 () button stat tin cto 屬性 1、案例實現代碼 import React, { Component } from ‘react‘; /** * 事件對象、鍵盤事件、表單事件、ref獲取dom節點、react實現類似Vue雙向

vue.js基礎知識篇(3):計算屬性控件綁定

multi option || list text 知識 基礎 unset select標簽 第四章:計算屬性 為了避免過多的邏輯造成模板的臃腫不堪,可使用計算屬性來簡化邏輯。 1.什麽是計算屬性 <!DOCTYPE html><html lang="e

4.新增相關的屬性

ext require orm nodelist node ogr 位置 data 以及 新增表單相關的屬性   1、可以對input(type=text)、select、textarea與button元素指定autofocus屬性。它以指定屬性的方式讓元素在打開頁面時自動

第3天:CSS浮動定位表格總結

特性 input 器) 用戶 style line ie瀏覽器 練習 doctype 今天學的是浮動、定位、表格、表單等內容,這些是CSS中最容易混淆的知識,有許多小技巧在寫代碼過程中需要註意。下面是主要知識點: 一、float浮動1、塊元素在一行顯示2、內聯元素支持寬高3

React Native 系列(八)

ted scott 核心 es2017 nts .org 分享 動畫 tintcolor 前言 本系列是基於React Native版本號0.44.3寫的。我們都知道,一個App不可能只有一個不變的界面,而是通過多個界面間的跳轉來呈現不同的內容。那麽這篇文章將介紹RN中的導