2016-12-07 23 views
1

我有一些麻煩從反應中獲取表單中的數據。表單本身是動態的,這意味着我的一些領域並不總是存在,但只在特定情況下呈現。從React的動態表單中獲取數據

當附上這些它很難預測容器的狀態應該看起來如何。還有哪些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 
} 
+0

所以表單域在MainProductContainer並在RequirementsContainer? –

+0

否。例如,MainProductContainer會通過一些邏輯來決定哪個產品應在此容器中顯示。產品本身是包含複選框的組件。所以Form - > MainProductContainer - > Product(包含一個字段) – days

回答

1

在這裏你可以找到如何做到這一點:React Native how to pass this.setState change to parent

+0

好吧!似乎你的意思是說,定期發送數據作爲道具的方式仍然是一種動態形式。在我的情況下,無法知道用戶可以事先在this.state中設置哪些變量,我會嘗試[this](http://stackoverflow.com/a/33867900/2584136) – days

+0

對不起,我忘了道具是隻讀的,並且您不能在您的子容器中更改它們。所以其他訪問這些數據的方法是通過Flux/Redux或者通過一個函數傳遞給你的子組件,這個組件改變了父項的狀態。 –

+0

沒有probs,一直在與之前的形式工作,但沒有與動態之一。我所聯繫的答案有一個確保國家只有想要的數據字段的有趣方法。只是不確定我是否應該去。這不是討論的論壇,但我並沒有愛上所有這些道具傳遞和狀態更新,迄今爲止在形式上的反應。 – days