react native之API学习

Alert用于启动一个提示对话框,包含对应的标题和信息。在Android上最多能指定三个按钮,这三个按钮分别具有“中间态”、“消极态”和“积极态”的概念。

Alert学习

Alert的API如下:

static alert(title: string,message?: string,button?: Buttons,type?: AlertType)

Alert认样式

render: function() {
      return(
          <TouchableHighlight style={styles.wrapper}
              onPress={() => Alert.alert(
              'Alert Title','Alert Content',)}>
              <View style={styles.button}>
                  <Text style={{color:'#ffffff'}}>Alert with message and default button</Text>
              </View>
        </TouchableHighlight>
      );
   }

var styles = StyleSheet.create({
  wrapper: {
    borderRadius: 5,marginBottom: 15,},button: {
    borderRadius: 5,backgroundColor: '#980763',alignItems: 'center',justifyContent: 'center',height: 50,}
});

上面为TouchableHighlight设置点击事件,并且在其onPress方法中创建一个Alert,没有指定任何按钮,则使用认的样式。效果如下:

自定义按钮

我们可以自己通过为Alert指定一个数组,来指定其需要使用到的按钮,格式如下:

[
                {text:'OK',onPress: ()=> console.log('Ok button click')},{text:'Cancel',onPress: ()=> console.log('Cancel button click')},]

关键代码如下:

<View>
        <TouchableHighlight style={styles.wrapper}
                onPress={() => Alert.alert(
                'Alert Title',)}>
              <View style={styles.button}>
                  <Text style={{color:'#ffffff'}}>Alert with message and default button</Text>
              </View>
        </TouchableHighlight>

        <TouchableHighlight style={styles.wrapper}
                onPress={() => Alert.alert(
                'Alert Title',[
                  {text:'OK',]
                )}>
              <View style={styles.button}>
                  <Text style={{color:'#ffffff'}}>Alert with two button</Text>
              </View>
        </TouchableHighlight>

        <TouchableHighlight style={styles.wrapper}
                onPress={() => Alert.alert(
                'Alert Title',null,[
                  {text: 'Foo',onPress: () => console.log('Foo pressed!')},{text: 'Bar',onPress: () => console.log('Bar pressed!')},{text: 'Baz',onPress: () => console.log('Baz pressed!')},]
              )}>
              <View style={styles.button}>
                <Text style={{color:'#ffffff'}}>Alert with three buttons</Text>
              </View>
        </TouchableHighlight>
</View>

Clipboard学习

另外react native也为我们提供了一个Clipboard,顾名思义,该API是用来操作剪切板的,下面,我们使用该Clipboard来实现一个简单的demo,效果如下:

上面的效果使用到了两个核心的方法

Clipboard.setString(string)
Clipboard.getString(string)

全部代码如下:

'use strict';

var React = require('react-native');

var {
  Image,StyleSheet,Text,TouchableWithoutFeedback,View,AppRegistry,Clipboard,TextInput,} = React;


var secondProject = React.createClass({

    getinitialState: function() {
      return {
        content: 'the clip have not been set',//初始化了一个content的state
        text: 'input a word to set'  ////初始化了一个text的state
      };
    },_setContentToClipboard:function(){
    var newClip = this.state.text; //获取文本框中的值
    Clipboard.setString(newClip); //重新设置剪切板
    Clipboard.getString(content => {
      this.setState({content}); //重置content的内容
    });
  },render() {
    return (
        <View>
            <View style={{flexDirection: 'row'}}>
                <View style={styles.cell}>
                  <TextInput
                    style={{height: 40,borderColor: 'gray',borderWidth: 1}}
                    onChangeText={(text) => this.setState({text})}
                    defaultValue ={this.state.text}
                />
            </View>
            <TouchableWithoutFeedback style={styles.cell}
                onPress ={() => this._setContentToClipboard()}
                >
                <Text style={styles.button}>设置clip</Text>
            </TouchableWithoutFeedback>
            </View>
          <Text style={{color: 'red',marginTop: 20}}>
              {this.state.content}
           </Text>
      </View>
    );
  }
});

var styles = StyleSheet.create({
  button: {
    backgroundColor: '#097678',width: 50,padding: 3,textAlign: 'center',color: '#ffffff',cell: {
      flex: 1,height: 50,justifyContent: 'center',});

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

在react native中会经常使用到state和prop,不懂得,可以先看下面的连接学习下:
react组件生命周期
react入门学习
react-native 之布局篇

Flex效果简介

弹性盒(FlexBox),类似于css中的盒子模型,不过FlexBox支持响应式布局。官方提供的各个属性效果如下:

未完待续。

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...