微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Creatable 从 react-select/creatable 中选择 React-final-form 中的 API 集成

如何解决Creatable 从 react-select/creatable 中选择 React-final-form 中的 API 集成

我已经成功地将 creatable 与 react-final-form 集成,但是当我尝试进行 API 调用时出现问题。我正在尝试使用 onIputChange 进行 API 调用,但是每当我收到响应(在道具中)时,我的下拉菜单就会关闭。它关闭接收新选项。我用普通的选择试了一下,效果很好。这是我的示例代码

                           <Field
                            name="tags"
                            component={ ({
                                input,...rest
                            }) => (<CreatableSelect {...input}
                                {...rest}}
                            />)}
                            isMulti
                            options={sortedTagsOptions}
                            onInputChange={(x) => handleChangeTypeheadInput(x)}/>

API 调用工作正常。只发生一个问题下拉列表关闭并失去焦点,并且选择中的写入值消失。如果有人对如何处理这个问题有任何想法,请告诉我。不过,这在没有 Field 组件的情况下工作正常。也许改变表单值?但在这方面也有问题。

解决方法

通过创建一个单独的组件而不是在一个组件中完成所有工作来解决它。

const AppCreateableSelectForm = ( {
    input: {
        name,onChange,value,},className,incomingOptions,isClearable,isMulti,onFocus,closeMenuOnSelect,incomingStyle,isDisabled,placeholder,onInputChange,noOptionsMessage,}) => {
return  <CreatableSelect
            name={name}
            isMulti={isMulti}
            onFocus={onFocus}
            closeMenuOnSelect={closeMenuOnSelect}
            options={incomingOptions}
            isClearable={isClearable}
            placeholder={placeholder ? placeholder:`Select`}
            className={className}
            isDisabled={isDisabled}
            styles={incomingStyle ? incomingStyle : style}
            value={value}
            onChange={onChange}
            onInputChange={onInputChange}
            noOptionsMessage={noOptionsMessage}
            theme={theme => ({
                ...theme,colors: {
                    ...theme.colors,primary: `#637282`,})}
            components={{
                IndicatorSeparator: () => null,}}
        />

此代码中可能未使用某些道具,因为我仅复制了相关代码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。