【问题标题】:Get TextInput value from different component从不同的组件获取 TextInput 值
【发布时间】:2017-07-07 09:36:18
【问题描述】:

我的应用中有 2 个 react 原生组件,一个是带有“完成”按钮的工具栏,在用户填写完表单后按下。
另一个是我需要从中获取数据的表单本身。
当用户单击“完成”时,我会发送带有参数的发布请求,但我找不到获取数据的简洁方法。
对此的最佳做法是什么?

我的工具栏:

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

【问题讨论】:

    标签: react-native components


    【解决方案1】:

    使用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});
    

    【讨论】:

    • 我如何从其他组件获取状态?我需要将它作为道具传递吗?
    • 如果你使用redux,只需要保存在reducer中,在你的其他场景中使用相同的reducer。如果只使用反应,只需将其作为道具传递。就像你说的
    • 我试过了,状态似乎是静态的,不会改变
    • 请添加您为此输入的代码,以便为您提供更好的指导
    • 我已经添加了相关代码,如果你想看其他的东西我可以添加。
    猜你喜欢
    • 2020-05-22
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多