react native 기초 배우기 004 - ScrollView, TextInput

1 분 소요

ScrollView

  • 화면을 스크롤할 수 있는 컴포넌트
  • scrollView

    ...
    import React, { Component } from 'react';
    import { View, Text, StyleSheet, TouchableOpacity, ScrollView } from 'react-native';
    import Header form './src/header';
    ...
    <Generator add={this.onAddRandomNum}/>
      
    <ScrollView
      style={{width: '100%'}}
    >
      
      <NumList
        num={this.state.random}
        delete={this.onNumDelete}
      />
    </ScrollView>
    ...
    

ScrollView의 Properties

onMomentumScrollBegin

  • 스크롤이 움직이기 시작했을 때 트리거되는 함수

    ...
      
    <ScrollView
      style={{width: '100%'}}
      onMomentumScrollBegin={()=>alert('begin')}
    >
      
    ...
    

onMomentumScrollEnd

  • 스크롤의 움직임이 끝나면 트리거되는 함수

    ...
      
    <ScrollView
      style={{width: '100%'}}
      onMomentumScrollEnd={()=>alert('end')}
    >
      
    ...
    

onScroll

  • 스크롤이 움직이면 트리거되는 함수

    ...
      
    <ScrollView
      style={{width: '100%'}}
      onScroll={()=>alert('Scrolling')}
    >
      
    ...
    

onContentSizeChange

  • View의 크리가 바뀌면 트리거되는 함수

    ...
      
    <ScrollView
      style={{width: '100%'}}
      onContentSizeChange={(width, height)=>alert(height)}
    >
      
    ...
    

bounces

  • 스크롤이 바운스 되는 것을 허용/방지

    ...
      
    <ScrollView
      style={{width: '100%'}}
      bounces={true}
    >
      
    ...
    

TextInput

  • 텍스트를 입력할 수 있는 컴포넌트
  • src/input.js 생성

    // input.js
    
    import React, { Component } from 'react';
    import { View, Text, StyleSheet, TextInput } from 'react-native';
    
    class Input extends Component {
    
      state = {
        myTextInput: 'text input'
      }
    
      onChangeInput = (event) => {
        this.setState({
          myTextInput: event
        })
      }
    
      render() {
        return (
          <View style={styles.mainView}>
            <TextInput
              value={this.state.myTextInput}
              style={styles.input}
              onChangeText={this.onChangeInput}
            />
          </View>
        )
      }
    }
    
    const styles = StyleSheet.create({
      mainView: {
        width: '100%'
      },
      input: {
        width: '100%',
        backgroundColor: '#cecece',
        marginTop: 20,
        fontSize: 25,
        padding: 10
      }
    })
    
    export default Input;
    
  • App.js 에 추가

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

TextInput의 Properties

multiline

  • 개행을 허용/방지

    <TextInput
      multiline={true}
    >
    

maxLength

  • 입력값의 길이를 제한

    <TextInput
      maxLength={100}
    >
    

autoCapitalize

  • 대문자 자동수정 허용/방지

    <TextInput
      autoCapitalize={'none'}
    >
    

editable

  • 입력을 허용/방지

    <TextInput
      editable={true}
    >
    

참고