1- import React , { useEffect , useState } from 'react'
1+ import React , { useEffect , useMemo , useState } from 'react'
22import Clipboard from 'react-clipboard.js'
33import { useSnackbar } from 'notistack'
44import { Collapse } from 'react-collapse'
@@ -17,10 +17,14 @@ const TranslationItem: React.FC<{
1717} > = ( { job } ) => {
1818 const config = useConfig ( )
1919 const [ loading , setLoading ] = useState ( true )
20- const [ result , setResult ] = useState < string > ( )
20+ const [ result , setResult ] = useState < string [ ] > ( )
2121 const [ collapse , setCollapse ] = useState ( true )
2222 const { enqueueSnackbar } = useSnackbar ( )
2323
24+ const textContent = useMemo ( ( ) : string [ ] => {
25+ return job . text . split ( '\n' )
26+ } , [ job . text ] )
27+
2428 const findOriginal = ( ) => {
2529 const { parentElement } = job
2630
@@ -51,7 +55,7 @@ const TranslationItem: React.FC<{
5155 payload,
5256 } )
5357
54- setResult ( payload . translations . map ( ( item ) => item . text ) . join ( '\n' ) )
58+ setResult ( payload . translations . map ( ( item ) => item . text ) )
5559
5660 setLoading ( false )
5761 } )
@@ -73,15 +77,23 @@ const TranslationItem: React.FC<{
7377 className = "ate_TranslationItem__original"
7478 onClick = { ( ) => setCollapse ( ( prev ) => ! prev ) } >
7579 < Collapse isOpened = { ! collapse } >
76- < div > { job . text } </ div >
80+ < >
81+ { textContent . map ( ( item , index ) => (
82+ < div key = { index } > { item } </ div >
83+ ) ) }
84+ </ >
7785 </ Collapse >
7886 </ div >
7987
8088 { loading ? (
8189 < div className = "ate_TranslationItem__result" > 翻译中…</ div >
8290 ) : undefined }
8391 { result ? (
84- < div className = "ate_TranslationItem__result" > { result } </ div >
92+ < div className = "ate_TranslationItem__result" >
93+ { result . map ( ( item , index ) => (
94+ < div key = { index } > { item } </ div >
95+ ) ) }
96+ </ div >
8597 ) : undefined }
8698 </ div >
8799 < div className = "ate_TranslationItem__lower" >
0 commit comments