2016-12-14 5 views
4

Я хочу, чтобы изменить значение динамически на какое-то событиеРеагировать Native: как изменить <Text> значение динамически

Событие:

BackgroundGeolocation.on('location', (location) => {  
    currentDistance = distance(previousLatitude,previousLongitude,latitude,longitude); 

      this.setState({ 
       text: currentDistance     
      });         

    }); 
<Text> 
    Moving : {this.state.text} 
</Text> 

Кто-нибудь знает, как изменить текст или любой другой способ достичь?

+0

Что именно вы хотите изменить? Какое событие? – Tikkes

+0

'this.setState ({text: 'Another Text'})' http://facebook.github.io/react-native/releases/0.38/docs/state.html – Cherniv

+0

Я хочу обновить расстояние, которое рассчитывается в моем местоположении событие i обновлено в вопросе но оно дает мне ошибку: undefined не является функцией (оценка 'this.setState ({text: currentDistance})') –

ответ

14

Ниже приведен пример использования состояний для динамического изменения текстового значения при нажатии на него. Вы можете установить любое событие, которое вы хотите.

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

export default class reactApp extends Component { 
    constructor() { 
     super() 
     this.state = { 
     myText: 'My Original Text' 
     } 
    } 
    updateText =() => { 
     this.setState({myText: 'My Changed Text'}) 
    } 
    render() { 
     return (
     <View> 
      <Text onPress = {this.updateText}> 
       {this.state.myText} 
      </Text> 
     </View> 
    ); 
    } 
} 
+0

мне нужно написать UPDATETEXT =() => { this.setState ({myText: 'My Changed Text'}) } Этот код внутри моего мероприятия? –

+0

получил его, мне просто нужно позвонить updateText() с нужным аргументом его работники Love it !!!! Спасибо ... –

2

Использование:

<TextInput editable={false} ref={component=> this._MyComponent=component}/> 

вместо:

<Text></Text> 

Затем вы можете изменить текст следующим образом:

onPress= {()=> { 
    this._MyComponent.setNativeProps({text:'my new text'}); 
}