从不同的组件中获取TextInput值

时间:2017-02-17 18:30:03

标签: react-native components

我的应用程序中有2个本机组件,其中一个是工具栏,其中包含" Done"按钮,在用户填写表格时按下 另一个是从我需要获取数据的表格本身 当用户点击"完成"我发送带有参数的帖子请求,但我找不到一种简洁的方法来获取数据 这是什么最佳做法?

我的工具栏:

<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>

1 个答案:

答案 0 :(得分:3)

使用state。您需要将视图绑定到model =&gt; (州)。请添加您的代码以获得更好的指南。

每次按下,新角色都需要使用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});