From 7fa277dbd99841b7b0e6e7f9651a06a0fb4ce065 Mon Sep 17 00:00:00 2001 From: zhangwenshuai Date: Mon, 9 Nov 2020 20:26:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=AF=E8=BE=93=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E6=8E=A7=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/base/edit/text-select/index.tsx | 13 ++++++++--- .../base/extra/dataEntry/textSelect/index.tsx | 22 ++++++++----------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/components/apolloTable/component/base/edit/text-select/index.tsx b/components/apolloTable/component/base/edit/text-select/index.tsx index b15e41d..e9117bb 100644 --- a/components/apolloTable/component/base/edit/text-select/index.tsx +++ b/components/apolloTable/component/base/edit/text-select/index.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useRef } from 'react'; import InputSearch from '../../extra/dataEntry/textSelect'; import { ApolloInputSearchProps } from '../editInterface'; import { antiAssign } from '../../../../utils/utils'; @@ -26,13 +26,14 @@ export const ApolloInputSearch = (props: ApolloInputSearchProps) => { 'getInstanceDetail', ]); const [curValue, setCurValue] = useState(value); + const isOpen = useRef(null); const changeValue = (value: any) => { setCurValue(value); if (typeof onChange === 'function') { onChange(value, value); } - // 表格中的单选,选择后直接触发更新 - if (origin === 'table' && selfProps.mode !== 'multiple') { + // 弹框关闭时触发修改 + if (origin === 'table' && selfProps.mode !== 'multiple' && !isOpen.current) { onBlur(value); } }; @@ -41,6 +42,12 @@ export const ApolloInputSearch = (props: ApolloInputSearchProps) => { onEmitChange(value, value); } }; + const onDropdownVisibleChange = (open: boolean) => { + isOpen.current = open; + }; + if (origin === 'table') { + selfProps.onDropdownVisibleChange = onDropdownVisibleChange; + } return ( { }; onResetValue = (searchStr) => { + if (!searchStr) return undefined; return { value: '', label: searchStr }; }; @@ -142,23 +142,19 @@ class TextSelect extends React.Component { } }; - onClear = () => { - const { tempVisible } = this.state; - const searchStr = ''; - const selected = this.onResetValue(searchStr); - this.setState({ searchStr, selected }, () => { - if (tempVisible) { - this.fetch(searchStr); - } - this.onChange(selected); - }); - }; - onVisibleChange = (tempVisible) => { const { onDropdownVisibleChange } = this.props; + const { selected } = this.state; this.setState({ tempVisible }); if (onDropdownVisibleChange) { onDropdownVisibleChange(tempVisible); + if (!tempVisible) { + // 清空或者为空对象时,强制置空 + if (!selected || selected.length === 0 || (!selected.label || !selected.value || !selected.key)) { + return this.onChange(undefined); + } + this.onChange(selected); + } } }; -- 2.21.0