繁体   English   中英

如何使用Redux-form v6将props正确传递给自定义组件

[英]How to correctly pass props to a custom component with Redux-form v6

我正在尝试将我的表单更新为redux-form v6.7,而且我很难解开这个部分。

假设我想渲染一个选择组件,如下所示:

 <div className="col-md-12">
     <Field name="name" component={renderSelect}/>
 </div>

这是我的组件,与之前版本的react-redux一起工作正常,显然有一个名为“name”的表单支持:

<VirtualizedSelect
                {...domOnlyProps(name)}
                filterOptions={itemsFilter}
                options={this.state.items.items}
                onChange={name.onChange}
                value={name.value}
                name="name"
                placeholder="Name"
                onBlur={() => name.onBlur(name.value)}
                autoBlur={true}
                simpleValue={true}
                multi={true}
                clearable={false}
                onBlurResetsInput={false}
                onCloseResetsInput={false}
                delimiter="|"
                showNewOptionAtTop={false}
                selectComponent={Creatable}
                promptTextCreator={(label) => {return "Search for " + label}}

            />

所以现在我试图将这个组件包装在renderSelect()函数中。 但我不确定如何正确地将我需要的道具传递给自定义组件。 我应该传递什么道具,默认传递哪些道具等。

const renderSelect = ({/*what to pass here?*/ input }) => (
    <FormGroup controlId="name" role="form" className="col-md-12">
        <div className="group selectW" style={{width: '100%'}}>
            <VirtualizedSelect
                {...domOnlyProps(name)}
                filterOptions={itemsFilter}
                options={this.state.items.items}
                onChange={name.onChange}
                value={name.value}
                name="name"
                placeholder="Name"
                onBlur={() => name.onBlur(name.value)}
                autoBlur={true}
                simpleValue={true}
                multi={true}
                clearable={false}
                onBlurResetsInput={false}
                onCloseResetsInput={false}
                delimiter="|"
                showNewOptionAtTop={false}
                selectComponent={Creatable}
                promptTextCreator={(label) => {return "Search for " + label}}

            />
        </div>
    </FormGroup>
);

帮助赞赏。

我想通了,发布它看起来像什么,因为它可能在某些时候帮助其他人

const renderSelect = ({input, items, filter}) => (
    <FormGroup controlId="name" role="form" className="col-md-12">
        <div className="group selectW" style={{width: '100%'}}>
            <VirtualizedSelect

                filterOptions={filter}
                options={items}
                onChange={input.onChange}
                value={input.value}
                name={input.name}
                placeholder="Name"
                onBlur={() => input.onBlur(input.value)}
                autoBlur={true}
                simpleValue={true}
                multi={true}
                clearable={false}
                onBlurResetsInput={false}
                onCloseResetsInput={false}
                delimiter="|"
                showNewOptionAtTop={false}
                selectComponent={Creatable}
                promptTextCreator={(label) => {return "Search for " + label}}

            />
        </div>
    </FormGroup>
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM