写在前边的话:

在上一个博客详细明确的介绍了React Native的环境的安装过程和一些会遇到的问题。
环境搭建好后,下一部就是使用它,在使用之前,我们应该学习关于RN的一些知识,学习一门语言或者是知识,学习的过程中最主要的一个环节就是要了解他,认识它,这篇文章将会引导你走进React Native 的殿堂。


一.创建项目

创建一个项目是十分简单的,不过是一行代码,一句命令的事情。主要是认识创建它的意义,认识并且很熟悉创建的内容是什么。先了解RN项目的目录结构和入口文件,在看一下package.json 和node_modules在项目中的作用。

1.使用React Native命令行工具来创建新项目:

react-native init 项目名

2.初始的目录结构

     1585399037225-afd3358e-0645-495f-950f-b9787f4ee4b2.png

3.入口文件内容

1585399123523-3c0cc139-092e-42ae-8bbf-cc08c999b680.png


二.页面怎么写

但我们知道了项目的是由哪里开始的,接下来的关键就是怎么写好页面,怎么渲染页面,当我们看到代码的改动直接映射到界面的变动时,能够更直观的学习RN的使用,下边将会详细的讲解页面,这样就很快地清除疑惑。现在我们先清空APP.js文件里的东西,然后在慢慢的自己编辑。

1.引入基本库和组件

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

2.在RN中,页面是由‘组件’搭建成的。我们先写一个简单地页面。

export default class Page extends Compont{
      render(){
      return(
        <View>
            <Text>hello RN!</Text>
        </View>
        );
    }
}


   代码解释:
2.1 这段代码,我们首先声明了一个类,它继承于Component,也就是他是一个组件。
2.2 组件中有个render()方法,我们的UI内容,都是通过这个render函数渲染的。
2.3 在render中我们有个View,一个Text。这都相当于HTML中标签一样,可以通过RN的官网认识更多。
2.4 运行项目,便可得到咱们写的代码了。

3.样式

3.1 RN中采用的和CSS基本相同的命名,使用激素js来写样式。
首先引入样式的api
import {..,StyleSheet} from 'react-native'; 
实现方法:

const PageStyle = StyleSheet.create({
    viewStyle: {
        flex: 1,
        alignItems: 'center',
        justifyContent: 'center',
        backgroundColor: 'black'
    },
    textStyle: {
      color: 'white',
      fontSize: 20
    }
});


给组件添加样式:

export default class Page extends Component {
  render() {
    return (
      <View style={PageStyle.viewStyle}>
          <Text style={PageStyle.textStyle}>hello RN!</Text>
      </View>
    );
  }
}


3.2 这里我们使用flex布局,简单的改动,不用坐标定位,也不用刻意指定约束。
将Text的内容居中展示,改变View背景颜色,Text颜色及字体大小。

4.数据源

在项目的开发中,页面最主要的最麻烦的动能就是数据的展示。比如我们要展示用户的基本信息,姓名,年龄。
那我们该怎么做呢?


在Page类的构造函数中声明两个字段:

...
constructor(props){
      super(props);
      this.name='李浩';
      this.age=100;
}

...


然后在组件中使用这两个数据:

render() {
    return (
        <View style={PageStyle.viewStyle}>
            <Text style={PageStyle.textStyle}>姓名:{this.name}</Text>
            <Text style={PageStyle.textStyle}>年龄:{this.age}</Text>
        </View>
    );
}


5.交互

页面最重要的最麻烦的功能之二,有了数据的展示,就要处理用户与项目的交互。RN中有丰富的手势和组件来实现与用户的交互。比如为年龄的Text增加点击事件,点击后,年龄+1.

render(){
    retrun(
      <View style={PageStyle.viewStyle}>
        <Text style={PageStyle.textStyle}>姓名:{this.name} </Text>
            <Text
                    style={PageStyle.textStyle}
                    onPress={
            ()=>{
              this.age +=1;
              console.log(this.age,'点击后的age');
            }
                    }
          >年龄:{this.age}</Text>
    </View>
  );
}

三.state

上面我们发现字段的值改变了,但是并没有体现在UI上,。
在RN中,页面中最直接的数据源,可以影响UI的,是一个叫state的字段。

1.首先我们把姓名和年龄放在state中

...
//构造函数
    constructor(props){
        super(props);
  
      this.state = {
      name:'李浩',
      age:100
    };
}
...

2.然后在组件中使用

    render() {
        return (
            <View style={PageStyle.viewStyle}>
                <Text style={PageStyle.textStyle}>姓名:{this.state.name}</Text>
                <Text style={PageStyle.textStyle}>年龄:{this.state.age}</Text>
            </View>
        );
    }

3.点击事件中更新年龄,更新state

...
    <Text
        style={PageStyle.textStyle}
        onPress={ () => {
            this.setState({
                age: this.state.age += 1
            });
        }}
    >年龄:{this.state.age}</Text>
...

此时的UI上就更新了变化.

4.state的使用

组件中使用state来展示UI的,都会根据state的刷新而及时的重新进行渲染。
state的使用注意不能通过this.stat.name = xx进行更新,而需要使用setState()的方法进行更新。

四.props

页面最麻烦也是最主要的功能三,传值。
每个组件都可以接受任意的输入值,称为props,也可以理解为,props 是传值的一个手段。

1.我们将刚刚的信息展示拆成一个组件。

function InfoComponent(props) {
    return (
        <View>
          <Text style={PageStyle.textStyle}>姓名:{props.name}</Text>
          <Text style={PageStyle.textStyle}>年龄:{props.age}</Text>
        </View>
    );
}

2.然后修改Page类的render布局

 render() {
        return (
            <View style={PageStyle.viewStyle}>
              <InfoComponent
                  name={this.state.name}
                  age={this.state.age}
              />
            </View>
        );
    }

3.props的使用

在这里我们现实封装了一个组件函数InfoComponent(props),它接受一个props参数,然后返回了一个组件,在组件中使用了props中的字段。
而Page类中,我们使用InfoComponent组件,并将state中的name和age传给了它。
这就是组件中props的传递和接受,可以实现组件中的数据传递。

4.state和props

props和state,都可以影响UI,当props变化了,使用props的组件也会及时渲染。

五.页面跳转于页面传值

会写页面了,但是项目并不是一个页面构成的,而多个页面的跳转和传值,是学习新的框架初期很关注的。
RN有多个导航可以选择,有原生框架的,有RN实现的。
选择一个导航,查看他的文档。






Last modification:March 29th, 2020 at 01:55 pm
如果觉得我的文章对你有用,请随意赞赏