2017-09-15 71 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集成了类似的事情。