【问题标题】:Get data from dynamic form in React从 React 中的动态表单获取数据
【发布时间】:2016-12-07 13:05:09
【问题描述】:

我在从表单中获取数据时遇到了一些麻烦。表单本身是动态的,这意味着我的某些字段并不总是存在,而是仅在特定情况下呈现。

当附加这些时,很难预测容器的状态应该是什么样子。还有哪些handleChange函数应该在那里。我的表单中的组件至少有 2 层深,因此组件本身就是将最终的输入组件渲染到 DOM。

看了一会,发现有人一直在使用refs,但是对于这种方式有很多负面的看法。而且它看起来确实有点……繁琐。

问题: 如果表单是动态的,你怎么能从表单中获取所有数据?

设置:

<Form onSubmit={this.acceptOffer.bind(this)}>
<MainProductContainer offer={this.state.offer}/>
<RequirementsContainer requirements={this.state.offer.requirements}/>
<Segment basic textAlign='center'>
   <Button
        type='submit'
        content='Send'
        primary
        loading={this.state.accept_state == 'pending'}>
   </Button>
</Segment>

.

acceptOffer(event) {
    //This is where I want to get all the data from the form
}

【问题讨论】:

  • 那么表单字段在 MainProductContainer 和 RequirementsContainer 中?
  • 没有。例如 MainProductContainer 通过一些逻辑来决定应该在这个容器中显示哪个产品。产品本身是包含复选框的组件。所以 Form -> MainProductContainer -> Product(包含一个字段)

标签: javascript forms reactjs


【解决方案1】:

您可以在这里找到操作方法:React Native how to pass this.setState change to parent

【讨论】:

  • 好的!似乎您的意思是常规发送数据作为道具的方式仍然适用于动态形式。在我无法知道用户可以事先在 this.state 中设置哪些变量的情况下,我将尝试this
  • 对不起,我忘记了 props 是只读的,你不能在你的子容器中改变它们。因此,访问这些数据的其他方法是通过 Flux/Redux 或通过您传递给子组件的函数来更改父组件中的状态。
  • 没有问题,之前在 react 中使用过表单,但没有使用动态表单。我链接的答案有一种有趣的方式来确保该州只有想要的数据字段。只是不确定我是否应该去。这不是讨论的论坛,但到目前为止,我不喜欢所有这些道具传递和状态更新在涉及表单时做出反应。
  • 我在 React Native 应用程序中也遇到了一些问题,并且想在未来使用 redux,在不传递任何东西的情况下处理全局状态似乎很好。所以也许 Redux 可以帮助你:redux.js.org/docs/introduction/Motivation.html
猜你喜欢
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 2016-09-04
  • 2018-01-17
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多