fix: 修复级联选择在编辑的时候没有默认值 close #633 (#749)

Reviewed-on: daoyoucloud/tachycode#749
Co-authored-by: wjh <wwwjh0710@163.com>
Co-committed-by: wjh <wwwjh0710@163.com>
This commit is contained in:
wjh 2024-04-17 16:53:19 +08:00 committed by sealday
parent f3671cf697
commit 4935dff231
2 changed files with 13 additions and 7 deletions

View File

@ -0,0 +1,5 @@
---
"@nocobase/client": patch
---
修复级联选择在编辑的时候没有值

View File

@ -30,7 +30,6 @@ const SchemaField = createSchemaField({
const Cascade = connect((props) => { const Cascade = connect((props) => {
const { data, mapOptions, onChange } = props; const { data, mapOptions, onChange } = props;
const [selectedOptions, setSelectedOptions] = useState([]);
const [options, setOptions] = useState(data); const [options, setOptions] = useState(data);
const fieldSchema = useFieldSchema(); const fieldSchema = useFieldSchema();
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
@ -41,21 +40,23 @@ const Cascade = connect((props) => {
const fieldFilter = fieldSchema['x-component-props']?.service?.params?.filter; const fieldFilter = fieldSchema['x-component-props']?.service?.params?.filter;
const sort = fieldSchema['x-component-props']?.service?.params?.sort; const sort = fieldSchema['x-component-props']?.service?.params?.sort;
const field: any = useField(); const field: any = useField();
const [selectedOptions, setSelectedOptions] = useState([]);
useEffect(() => { useEffect(() => {
if (props.value) { const propsValue = props.value || fieldSchema['x-component-props'].value;
const values = Array.isArray(props.value) if (propsValue && !selectedOptions.length) {
const values = Array.isArray(propsValue)
? extractLastNonNullValueObjects( ? extractLastNonNullValueObjects(
props.value?.filter((v) => v.value), propsValue?.filter((v) => v.value),
true, true,
) )
: transformNestedData(props.value); : transformNestedData(propsValue);
const defaultData = values?.map?.((v) => { const defaultData = values?.map?.((v) => {
return v.id; return v.id;
}); });
setSelectedOptions(defaultData); setSelectedOptions(defaultData);
} }
onDropdownVisibleChange('true'); onDropdownVisibleChange('true');
}, []); }, [fieldSchema['x-component-props'].value]);
const handleGetOptions = async () => { const handleGetOptions = async () => {
const response = await resource.list({ const response = await resource.list({
pageSize: 9999, pageSize: 9999,
@ -85,7 +86,7 @@ const Cascade = connect((props) => {
if (index === option.length - 1) { if (index === option.length - 1) {
options.push({ options.push({
key: item.id, key: item.id,
children: null, children: item.children || null,
}); });
} else { } else {
options.push({ options.push({