2016-06-10 3 views
0

У меня есть компонент NavigatorIOS, который содержит представление настроек. В этом представлении настроек есть список параметров, которые индивидуально открывают свое собственное представление при нажатии. Когда эта настройка щелкнули, задняя стрелка и правая кнопка появляется, например, так: back arrow and right buttonКак получить значение дочернего компонента TextInput NavigatorIOS в native-native

У меня есть набор функций для того, когда правая кнопка нажата называется onRightButtonPress, что находится внутри push функции моего штурмана, который вызывается с страницы настроек, чтобы привязать страницу настроек к ребенку. Моя push функция выглядит следующим образом:

navHeight(){ 
    this.props.navigator.push({ 
     title: 'Height', 
     component: Height, 

     rightButtonTitle: 'Save', 
     passProps: { 
      units: this.state.units 
     }, 
     onRightButtonPress:() => { 
      console.warn("hey whats up hello"); 
      this.props.navigator.pop()} 
     }) 
    } 

компонент Высота, которая визуализируется как ребенок выглядит следующим образом:

class Height extends Component{ 
    render(){ 
    return(
     <View style={styles.settingInput}> 
     <Text style={styles.inputRow}>Height: </Text> 
      <TextInput ref="heightInput" 
     onChangeText={function(text){ 
      console.warn(text); 
     } 
     }/> 
      <Text style={styles.inputRowRight}> m</Text> 
     </View> 
    );  
    } 
} 

Есть ли способ, чтобы получить доступ к стоимости TextInput в Height компонента при onRightButtonPress называется? Моя реакция-родная версия 0.27.2, если это помогает.

Редактировать: I Специально хочу получить доступ к тексту, записанному внутри TextInput при нажатии кнопки Save. В принципе, я не хочу, чтобы реквизит, переданный ребенку, обновлялся, если он не был нажат.

+0

Вы можете передать 'onRightButtonPress.bind (это)' для _Height_, так что вы можете использовать его как 'onChangeText = {функция (текст) {this.props.onRightButtonPress (текст);}}' – Siou

+0

О, но я в частности, хотите, чтобы onRightButtonPress не вызывался до нажатия правой кнопки. Это вызывает onRightButtonPress каждый раз, когда текст изменяется. – zavtra

ответ

0

Как раз для того чтобы уточнить, я никогда не использовал реакцию-родной, просто реагирует.

Возможно, вы можете передать функцию непосредственно в реквизит и назначить ее в качестве обратного вызова для onChangueText компонента TextInput.

const externalGetInputText() => return this.refs.heightInput.value; 


navHeight() { 
    this.props.navigator.push({ 
     title: 'Height', 
     component: Height, 

     rightButtonTitle: 'Save', 
     passProps: { 
      units: this.state.units, 
      internalGetInputText: externalGetInputText 
     }, 
     onRightButtonPress:() => { 
      console.warn("hey whats up hello"); 
      const text = externalGetInputText(); 
      console.warn(text); 
      this.props.navigator.pop()} 
    }) 
} 

class Height extends Component{ 
    render(){ 
     return(
      <View style={styles.settingInput}> 
       <Text style={styles.inputRow}>Height: </Text> 
       <TextInput 
        ref="heightInput" 
        onChangeText={this.props.internalGetInputText} 
       /> 
       <Text style={styles.inputRowRight}> m</Text> 
      </View> 
     ); 
    } 
} 

Последнее замечание, я did't проверить его.

+0

Не похоже, чтобы я объявлял externalGetInputText вне класса. Я сделал глобальную переменную cachedHeight, которая обновляет 'onPress' и будет сохранена при вызове' onRightButtonPress'. Это хакерское решение, и я не горжусь этим. – zavtra

+0

Если вы выясните один лучший способ ley me know =) –

+0

Сделаю. Я чувствую, что «связывание» можно использовать, как заметил комментарий Сиуу, просто не так, как он это сделал. – zavtra

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