2017-02-17 4 views
0

У меня есть 2 взаимодействия собственных компонентов в моем приложении, одна из которых - панель инструментов с кнопкой «Готово», нажата, когда пользователь заполняет форму.
Другое - это сама форма, откуда мне нужно получить данные.
Когда пользователь нажимает «Готово», я отправляю сообщение с параметрами, но я не могу найти аккуратный способ получить данные.
Что лучше всего подходит для этого?

Моя панель инструментов:Получите значение TextInput от другого компонента

<TopToolbar text='Upload new item' 
    navigator={this.props.navigator} state={this.state} donePage={'true'}/> 

В компоненте панели инструментов я имею кнопку Готово:

 <TouchableHighlight style={styles.done} onPress={() =>{this.state.text=this.props.state.data.price}} underlayColor='#4b50f8'> 
      <Image source={require('./Images/Path 264.png')}/> 
     </TouchableHighlight> 

и один из текстовых входов:

<TextInput placeholder='Price*' style={styles.text} onChangeText={(text) => { this.state.data.price = text }}></TextInput> 

ответ

3

Использование state. Вам нужно привязать представление к модели => (состояние). Добавьте свой код для лучшего руководства.

Каждый раз, когда вы нажимаете и новый символ должен быть сохранен в состоянии с помощью onChangeText

Пример:

class UselessTextInput extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { text: 'Useless Placeholder' }; 
    } 

    render() { 
    return (
     <TextInput 
     style={{height: 40, borderColor: 'gray', borderWidth: 1}} 
     onChangeText={(text) => this.setState({text})} 
     value={this.state.text} 
     /> 
    ); 
    } 
} 

При нажатии на кнопку Done. Значение TextInput будет храниться в this.state.text

Для получения дополнительной информации: https://facebook.github.io/react-native/docs/textinput.html

Я думаю, что ваша главная проблема в том, что вам нужно, чтобы узнать больше о состояниях в документации среагировать

https://facebook.github.io/react-native/docs/state.html

Когда вам нужно установить состояние. Вы должны использовать setState не this.state.data.price = text. Состояние - это объект с несколькими ключами. Ваши потребности изменяют один внутренний ключ внутри data, вам нужно изменить все ключи data и заменить его.

Пример:

В конструкторе объявить

this.state = { data: {price: 10, name: xxxx} }; 

, если необходимо изменить данные, которые вы должны сделать что-то подобное.

var dataM = this.state.data; 
dataM.price = 200 

this.setState({ data: dataM}); 
+0

и как мне получить состояние от другого компонента? Нужно ли передавать его в качестве опоры? –

+0

Если вы используете редукцию, просто нужно сэкономить в редукторе и использовать тот же редуктор в своей другой системе. Если использовать только реакцию, просто передайте ее в качестве опоры. Так же, как вы говорите – jose920405

+0

Я пробовал это, и состояние кажется статическим и не меняет –

Смежные вопросы