Skip to content

Commit 06e9d43

Browse files
author
shuai
committed
fix: Changes in the editor content will reset the values of other form fields.
1 parent 2d02452 commit 06e9d43

1 file changed

Lines changed: 32 additions & 56 deletions

File tree

ui/src/pages/Questions/Ask/index.tsx

Lines changed: 32 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,8 @@ const Ask = () => {
147147
if (prefill || draft) {
148148
if (prefill) {
149149
const file = fm<any>(decodeURIComponent(prefill));
150-
setFormData((prev) => ({
151-
...prev,
152-
title: { ...prev.title, value: file.attributes?.title || '' },
153-
content: { ...prev.content, value: file.body || '' },
154-
}));
150+
formData.title.value = file.attributes?.title;
151+
formData.content.value = file.body;
155152
if (!queryTags && file.attributes?.tags) {
156153
// Remove spaces in file.attributes.tags
157154
const filterTags = file.attributes.tags
@@ -161,19 +158,14 @@ const Ask = () => {
161158
updateTags(filterTags);
162159
}
163160
} else if (draft) {
164-
setFormData((prev) => ({
165-
...prev,
166-
title: { ...prev.title, value: draft.title || '' },
167-
content: { ...prev.content, value: draft.content || '' },
168-
tags: { ...prev.tags, value: draft.tags || [] },
169-
answer_content: {
170-
...prev.answer_content,
171-
value: draft.answer_content || '',
172-
},
173-
}));
161+
formData.title.value = draft.title;
162+
formData.content.value = draft.content;
163+
formData.tags.value = draft.tags;
164+
formData.answer_content.value = draft.answer_content;
174165
setCheckState(Boolean(draft.answer_content));
175166
setHasDraft(true);
176167
}
168+
setFormData({ ...formData });
177169
} else {
178170
resetForm();
179171
}
@@ -239,25 +231,17 @@ const Ask = () => {
239231
return;
240232
}
241233
questionDetail(qid).then((res) => {
242-
setFormData((prev) => {
243-
const updatedFormData = {
244-
...prev,
245-
title: { ...prev.title, value: res.title },
246-
content: { ...prev.content, value: res.content },
247-
tags: {
248-
...prev.tags,
249-
value: res.tags.map((item) => {
250-
return {
251-
...item,
252-
parsed_text: '',
253-
original_text: '',
254-
};
255-
}),
256-
},
234+
formData.title.value = res.title;
235+
formData.content.value = res.content;
236+
formData.tags.value = res.tags.map((item) => {
237+
return {
238+
...item,
239+
parsed_text: '',
240+
original_text: '',
257241
};
258-
setImmData(updatedFormData);
259-
return updatedFormData;
260242
});
243+
setImmData({ ...formData });
244+
setFormData({ ...formData });
261245
});
262246
}, [qid]);
263247

@@ -271,10 +255,10 @@ const Ask = () => {
271255
);
272256

273257
const handleTitleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
274-
setFormData((prev) => ({
275-
...prev,
258+
setFormData({
259+
...formData,
276260
title: { value: e.currentTarget.value, errorMsg: '', isInvalid: false },
277-
}));
261+
});
278262
if (e.currentTarget.value.length >= 10) {
279263
querySimilarQuestions(e.currentTarget.value);
280264
}
@@ -289,25 +273,25 @@ const Ask = () => {
289273
}));
290274
};
291275
const handleTagsChange = (value) =>
292-
setFormData((prev) => ({
293-
...prev,
276+
setFormData({
277+
...formData,
294278
tags: { value, errorMsg: '', isInvalid: false },
295-
}));
279+
});
296280

297281
const handleAnswerChange = (value: string) =>
298-
setFormData((prev) => ({
299-
...prev,
282+
setFormData({
283+
...formData,
300284
answer_content: { value, errorMsg: '', isInvalid: false },
301-
}));
285+
});
302286

303287
const handleSummaryChange = (evt: React.ChangeEvent<HTMLInputElement>) =>
304-
setFormData((prev) => ({
305-
...prev,
288+
setFormData({
289+
...formData,
306290
edit_summary: {
307-
...prev.edit_summary,
291+
...formData.edit_summary,
308292
value: evt.currentTarget.value,
309293
},
310-
}));
294+
});
311295

312296
const deleteDraft = () => {
313297
const res = window.confirm(t('discard_confirm', { keyPrefix: 'draft' }));
@@ -429,17 +413,9 @@ const Ask = () => {
429413
const handleSelectedRevision = (e) => {
430414
const index = e.target.value;
431415
const revision = revisions[index];
432-
setFormData((prev) => {
433-
const updated = {
434-
...prev,
435-
content: {
436-
...prev.content,
437-
value: revision.content?.content || '',
438-
},
439-
};
440-
setImmData(updated);
441-
return updated;
442-
});
416+
formData.content.value = revision.content?.content || '';
417+
setImmData({ ...formData });
418+
setFormData({ ...formData });
443419
};
444420
const bool = similarQuestions.length > 0 && !isEdit;
445421
let pageTitle = t('ask_a_question', { keyPrefix: 'page_title' });

0 commit comments

Comments
 (0)