2017-09-15 72 views
0

我使用Redux的形式和我有一個正常的下拉ReduxForm選擇值選項被過濾去除,但選項保持選定

有列表中的3個選項。 選項1 選項2 選項3 我選擇選項3. 後來我進入我的過濾器輸入字段和類型1. 現在只需在列表中包含選項1. 但選項3的形式狀態仍處於選中狀態。

如何獲取表單進行更新並意識到該選項不在列表中,並轉到默認值?

有幾種方法我雖然做了它,但不知道什麼是最好的。

我可以在formReducer.plugin中使用/ CHANGE操作類型和過濾字段來編寫一些狀態更改邏輯。

只要我輸入過濾器字段,我可以在select上調用onChange事件。

如果當前狀態選擇值在列表中,並且如果沒有,則可以在選擇未定義的對象上調用redux-form更改操作,以便始終檢查選擇組件渲染函數。

r更好的東西?

+0

添加一些示例代碼。我會提供一個猜測答案,但沒有代碼,這只是一個猜測。 – Snekse

回答

0

如果您使用某個組件進行選擇,則需要覆蓋onChange prop以確保組件獲取onChange事件以及redux-form字段input

export const renderSelect = ({input, meta: { touched, error }, ...rest}) => { 
    return <Form.Select {...input} {...rest} 
     onChange={ (event, data) => { input.onChange(data.value);}} 
    /> 
}; 

const MyFormComponent = (props) => { 
    const {brandData, productData, groupData} = props.optionsData; 
    return (
    <Form> 
     <Field name='brandData' options={brandData} component={renderSelect}/> 
     <Field name='productData' options={productData} component={renderSelect}/> 
     <Field name='groupData' options={groupData} component={renderSelect}/> 
    </Form> 
); 
}; 

你可以看到在redux-form例子做了與第三方組件的形式在其material-ui example集成了類似的事情。