天天看點

React Native 基礎元件與基礎React基礎

React Native有很多的元件,像文本、圖檔、加載框等等,首先認識一下基礎的,也是最常用的五大元件。

官方描述如下:

REACT NATIVE UI元件 ANDROID視圖 IOS視圖 html視圖 描述

<View>

<ViewGroup>

<UIView>

非滾動 

<div>

一個支援Flexbox,樣式,一些觸摸處理和輔助功能控件布局的容器

<Text>

<TextView>

<UITextView>

<p>

顯示,設定樣式和嵌套文本字元串,甚至處理觸摸事件

<Image>

<ImageView>

<UIImageView>

<img>

顯示不同類型的圖像

<ScrollView>

<ScrollView>

<UIScrollView>

<div>

通用滾動容器,可以包含多個元件和視圖

<TextInput>

<EditText>

<UITextField>

<input type="text">

允許使用者輸入文字

View:布局,可以放置多個元件的集合

Text:文本展示

Image:圖檔展示

ScrollView:滾動視圖,可包含多個元件的集合,View子類

TextInput:文本輸入框

React基礎

基本引用與文本展示

建立一個React子產品,需要首先添加引用:

引用 react:import React from 'react';

通過babel會将jsx編譯成普通js代碼會用到React,是以需要React

引用所需元件,例如引用Text:import { Text } from 'react-native';

如下所示:我們可以使用Text元件來編寫代碼

import React from 'react';
import { Text } from 'react-native';
           

添加以下代碼:界面将會出現Hello world文本展示

export default function Hello() {
  return (
    <Text>Hello world</Text>
  );
}
export:可将此子產品導出,在其他子產品引用
           

同理,我們還可以一次引用多個元件,例如:一次引用View,Text,TextInput

import { Text, TextInput, View } from 'react-native';
           

這裡可以用View包裹Text和TextInput,使它們可以展現在同一個視圖,例如:

export default function Hello() {
  return (
    <View>
    <Text>Hello world</Text>
     <TextInput
          placeholder="請輸入!"
        />
    <View>
  );
}
           

圖檔展示

圖檔展示需要添加引用image元件,如下所示:

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

插入代碼:要注意網絡圖檔和本地圖檔寫法不一緻

export default class App extends Component {
  render() {
    return (
      <View style={styles.container}>

        <Image
          source = {require('')}   //插入本地圖檔
        
        />
        <Text>這是本地圖檔</Text>

        <Image 
          source = {{uri:''}}     //插入網絡圖檔
        />
        <Text>這是網絡圖檔</Text>  

      </View>
    );
  }
}
           

其中網絡圖檔和 base64 資料的圖檔需要手動指定尺寸,如何指定尺寸即樣式寫法就是下面要說的

填寫樣式

樣式可以直接寫到元件裡或者通過StyleSheet建立

直接寫法:

<Image   style={width:200,height:200}
          source = {require('')}
        />
           

長度預設機關dp,在不同的螢幕尺寸會對應不一樣大小的px

StyleSheet,首先引用StyleSheet

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

添加樣式,通過聲明styles常量來使用:

const styles = StyleSheet.create({
  image: {
    height: 200,
    width: 200
  },
  text:{
    color:'#000000',
    fontSize:20
  },
  text2:{
    color:'#860860',
    fontSize:50
  }
});
           

如此将上面那個圖文代碼改為:

export default class App extends Component {
  render() {
    return (
      <View>

        <Image
          style={{width}}
          source = {require('')}
        
        />
        <Text style={styles.text2}>這是本地圖檔</Text>

        <Image 
          style = {styles.image}
          source = {{uri:''}}
        />
        <Text style={styles.text}>這是網絡圖檔</Text>

      </View>
    );
  }
}
           

這樣就加上了樣式,當然最外層的View也可以這樣添加

ScrollView

滾動視圖,當螢幕寬度或高度不足以展示所有内容的時候用它來進行滾動展示,帶有滾動條,可垂直和橫向滾動

用法和View一樣,但是ScrollView必須有一個确定的高度才能正常使用;我們可以在初始化的時候給ScrollView一個指定高度或寬度,這樣肯定是不理想的,或者給ScrollView指定flex(權重寫法),這樣的話它的子元件也需要都指定flex,否則會出現錯誤。

同理,也需要引入ScrollView;

import React from 'react';
import { View, Text, Image, ScrollView, TextInput } from 'react-native';
export default function hello() {
return (
  <ScrollView contentContainerStyle={styles.scroll}>
    。。。  //内容,可放圖檔,文字等等
  </ScrollView>
);
}
const styles = StyleSheet.create({
  scroll: {
    paddingVertical: 20   //上下邊距為20
  }
});
           

在React中props和state是兩個非常非常非常重要的屬性一定要掌握這兩個

props屬性

props屬性起到了在元件之間傳值的作用,将傳入的值渲染在界面上;将需要調用的方法添加props參數,需要渲染的部分調用時指定其具體的字段,如下代碼:

import React from 'react';
import { Text, View } from 'react-native';
function Named(props) {             //props隻是一個參數,名字可以修改
  return (
    <View>
      <Text>Hello, my name is{props.name}!</Text>
    </View>
  );
}
export default function hello() {   //要渲染的部分
  return (
    <View>
      <Named name="123" />
      <Named name="234" />
    </View>
  );
}
           

state狀态

state顧明思意是狀态的意思,react可以在調用setState方法時,更新ui,就是重新渲染界面,這就厲害了,不像我們寫html代碼時,更新資料需要  divId.html("内容")這樣去手動更新。

要先了解一個概念:hooks,React16.7之前的state用法很麻煩,要先給this.state指定一個或多個可能變化的資料(變量),在通過方法修改這個值,要修改state,肯定不能在函數裡,需要有類,這就很麻煩;添加hooks以後,可以在不編寫類的情況下使用 state(狀态) 和其他 React 功能,如下所示一個簡單例子:

import React, { useState } from "react";
import { Button, Text, View } from "react-native";
export default function hello() {
  const [count, setCount] = useState(0);
 
  return (
    <View>
      <Text>{count}  </Text>
     <Button
        onPress={() => setCount(count + 1)}
        title="add"
    
      
      />
    </View>
  ); 
 }
           

上面例子意思是 聲明一個count變量,初始值為1,我們通過setCount方法去改變這個變量的值的時候,react會重新去渲染UI,改變Text中的值(界面會實時更新count的值)。

繼續閱讀