реагировать на родной - динамически обновлять значение таблицы стилей - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу обновить значение свойства top в таблице стилей. Который в настоящее время "25", и я хочу изменить значение на "0" или что-то еще. На самом деле, я хочу заархивировать, как только пользователь нажмет на «TextInput», «Text» переместится немного вверх «TextInput».

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

export default class InputBoxComponent extends Component{
  constructor(props){
    super(props);
    this.state = {
      'labelPosition':25
    }
  }

  onFoucusHandler = () => {
    this.state.labelPosition = 0
  }

  onBlurHandler = () => {
    this.state.labelPosition = 25
  }

  render(){
    return(
      <View style={styles.container}>
        <Text style={{
          'color':'#7b858e',
          'fontSize':12,
          'top':this.state.labelPosition
        }}>{this.props.label}</Text>
        <TextInput style={styles.input} onFocus={this.onFoucusHandler} onBlur={this.onBlurHandler}/>
      </View>
    )
  }
}

InputBoxComponent.defaultProps = {
  'label':'Label',
  'labelPosition': 25
}

const styles = StyleSheet.create({
  container:{
    paddingBottom: 10,
    paddingTop: 10
  },
  input:{
    borderBottomColor: '#ccc',
    borderBottomWidth: 1,
    paddingTop: 5,
    paddingBottom: 5,
    fontSize: 16
  }
})

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы можете заменить

this.state.labelPosition = 0 

на

this.setState({labelPosition:0})

Также посмотрите на библиотеку, как Native Base https://docs.nativebase.io/Components.html#floating-label-headref Я думаю, что плавающая метка может сделать то, что выпытаясь достичь.

0 голосов
/ 18 сентября 2018

Вы должны попробовать keyboardavoidingview для этого.

Ссылка: https://facebook.github.io/react-native/docs/keyboardavoidingview

...