import { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons'; import { Button, Form, Input, Switch } from 'antd'; import cls from 'classnames'; import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import styles from '../styles.module.css'; interface RecommendQuestion { question: string; valid: boolean; } interface FormRecommendQuestion { recommend_questions: RecommendQuestion[]; } const RecommendQuestions: React.FC<{ initValue: any[]; updateData: (data: RecommendQuestion[]) => void; classNames?: string; formStyle?: string; labelCol?: boolean; }> = ({ initValue, updateData, classNames, formStyle, labelCol = true }) => { const { t } = useTranslation(); const [form] = Form.useForm(); const recommendQuestions = Form.useWatch('recommend_questions', form); // 将数据实时返回给消费组件 useEffect(() => { updateData(recommendQuestions?.filter(question => !!question.question)); }, [recommendQuestions, updateData]); return (
style={{ width: '100%' }} form={form} initialValues={{ recommend_questions: initValue || [{ question: '', valid: false }], }} autoComplete='off' wrapperCol={{ span: 20 }} {...(labelCol && { labelCol: { span: 4 } })} > {(fields, { add, remove }) => ( <> {fields.map(({ key, name }, index) => (
{ remove(name); }} />
))} )}
); }; export default RecommendQuestions;