Antd表单在处理文本区域(TextArea)时无法自动处理换行符,需要在提交前手动处理换行符。
例如,如果您有一个文本区域的值为“Hello\nworld”,则可以在提交表单之前使用以下代码处理该值:
const fixedValue = value.replace(/\n/g, '
');
这将把换行符替换为HTML实体编码,然后您可以将处理过的值发送到服务器。在服务器端,您可以将HTML实体解码为正常的换行符。
const realValue = fixedValue.replace(/
/g, '\n');
如果您使用了React Hook Form来处理Antd表单,则可以使用register()中的resolver选项来处理换行符。例如:
import {FieldError, useForm} from "react-hook-form";
import {Input, Form} from "antd";
const TextArea = Input.TextArea;
type FormValues = {
message: string;
};
const resolver = (data: FormValues) => ({
values: {
...data,
message: data.message.replace(/\n/g, '
')
}
});
const MyForm = () => {
const {register, handleSubmit, errors} = useForm({resolver});
const onSubmit = (data: FormValues) => {
console.log(data.message.replace(/
/g, '\n'));
};
return (
{errors.message && Please enter a message. }
);
};
export default MyForm;
以上代码将在输入文本区域中查找换行符,并将其替换为HTML实体,并在表单提交时将其发送到服务器。在服务器上,您可以使用相同的替换来解码HTML实体并返回正常的换行符