@@ -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