Skip to content

Commit 2b6d058

Browse files
committed
Use html-react-parser
1 parent 700212d commit 2b6d058

File tree

3 files changed

+50
-9
lines changed

3 files changed

+50
-9
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"file-loader": "4.3.0",
8080
"fs-extra": "^8.1.0",
8181
"graphql": "^14.5.8",
82+
"html-react-parser": "^0.10.1",
8283
"html-webpack-plugin": "4.0.0-beta.5",
8384
"identity-obj-proxy": "3.0.0",
8485
"immer": "^5.0.1",
@@ -232,7 +233,7 @@
232233
"@loadable/babel-plugin"
233234
]
234235
},
235-
"proxy": "https://v2.velog.io/",
236+
"proxy": "http://localhost:5000",
236237
"devDependencies": {
237238
"@loadable/webpack-plugin": "^5.7.1"
238239
}

src/components/common/MarkdownRender.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import Typography from './Typography';
1010
import embedPlugin from '../../lib/remark/embedPlugin';
1111
import { loadScript, ssrEnabled } from '../../lib/utils';
1212
import media from '../../lib/styles/media';
13+
import parse from 'html-react-parser';
1314

1415
export interface MarkdownRenderProps {
1516
markdown: string;
@@ -117,13 +118,11 @@ const MarkdownRender: React.FC<MarkdownRenderProps> = ({
117118
});
118119
}, [markdown, onConvertFinish]);
119120

120-
const markup = { __html: html };
121+
const element = parse(html);
122+
121123
return (
122124
<Typography>
123-
<MarkdownRenderBlock
124-
dangerouslySetInnerHTML={markup}
125-
className={codeTheme}
126-
/>
125+
<MarkdownRenderBlock className={codeTheme}>{element}</MarkdownRenderBlock>
127126
</Typography>
128127
);
129128
};
@@ -162,4 +161,4 @@ const MarkdownRender: React.FC<MarkdownRenderProps> = ({
162161
// }
163162
// }
164163

165-
export default MarkdownRender;
164+
export default React.memo(MarkdownRender);

yarn.lock

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1501,6 +1501,11 @@
15011501
dependencies:
15021502
date-fns "*"
15031503

1504+
1505+
version "2.4.1"
1506+
resolved "https://registry.yarnpkg.com/@types/domhandler/-/domhandler-2.4.1.tgz#7b3b347f7762180fbcb1ece1ce3dd0ebbb8c64cf"
1507+
integrity sha512-cfBw6q6tT5sa1gSPFSRKzF/xxYrrmeiut7E0TxNBObiLSBTuFEHibcfEe3waQPEDbqBsq+ql/TOniw65EyDFMA==
1508+
15041509
"@types/eslint-visitor-keys@^1.0.0":
15051510
version "1.0.0"
15061511
resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
@@ -4682,7 +4687,7 @@ domexception@^1.0.1:
46824687
dependencies:
46834688
webidl-conversions "^4.0.2"
46844689

4685-
domhandler@^2.3.0:
4690+
domhandler@2.4.2, domhandler@^2.3.0:
46864691
version "2.4.2"
46874692
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
46884693
integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
@@ -6296,6 +6301,15 @@ html-comment-regex@^1.1.0:
62966301
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
62976302
integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
62986303

6304+
6305+
version "0.2.3"
6306+
resolved "https://registry.yarnpkg.com/html-dom-parser/-/html-dom-parser-0.2.3.tgz#bfee592fc01c12bac08dcfa5da2611f9559a1812"
6307+
integrity sha512-GdzE63/U0IQEvcpAz0cUdYx2zQx0Ai+HWvE9TXEgwP27+SymUzKa7iB4DhjYpf2IdNLfTTOBuMS5nxeWOosSMQ==
6308+
dependencies:
6309+
"@types/domhandler" "2.4.1"
6310+
domhandler "2.4.2"
6311+
htmlparser2 "3.10.1"
6312+
62996313
html-encoding-sniffer@^1.0.2:
63006314
version "1.0.2"
63016315
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
@@ -6321,6 +6335,16 @@ html-minifier@^3.5.20:
63216335
relateurl "0.2.x"
63226336
uglify-js "3.4.x"
63236337

6338+
html-react-parser@^0.10.1:
6339+
version "0.10.1"
6340+
resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-0.10.1.tgz#1a83c635f234645ee48b29f8dae31d55459e3043"
6341+
integrity sha512-AjqgYb4vwysX6i5Cma8CYffN716u9IcqtKU4Zp2wUIDSRw2PlQCpPPlKOr73t9eXCF+R8LrVS4byGnf9M8FTzA==
6342+
dependencies:
6343+
"@types/domhandler" "2.4.1"
6344+
html-dom-parser "0.2.3"
6345+
react-property "1.0.1"
6346+
style-to-object "0.3.0"
6347+
63246348
html-void-elements@^1.0.0:
63256349
version "1.0.4"
63266350
resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.4.tgz#95e8bb5ecd6b88766569c2645f2b5f1591db9ba5"
@@ -6338,7 +6362,7 @@ [email protected]:
63386362
tapable "^1.1.0"
63396363
util.promisify "1.0.0"
63406364

6341-
htmlparser2@^3.3.0:
6365+
htmlparser2@3.10.1, htmlparser2@^3.3.0:
63426366
version "3.10.1"
63436367
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
63446368
integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
@@ -6597,6 +6621,11 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
65976621
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
65986622
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
65996623

6624+
6625+
version "0.1.1"
6626+
resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
6627+
integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
6628+
66006629
inline-style-prefixer@^4.0.0:
66016630
version "4.0.2"
66026631
resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz#d390957d26f281255fe101da863158ac6eb60911"
@@ -10575,6 +10604,11 @@ react-outside-click-handler@^1.3.0:
1057510604
object.values "^1.1.0"
1057610605
prop-types "^15.7.2"
1057710606

10607+
10608+
version "1.0.1"
10609+
resolved "https://registry.yarnpkg.com/react-property/-/react-property-1.0.1.tgz#4ae4211557d0a0ae050a71aa8ad288c074bea4e6"
10610+
integrity sha512-1tKOwxFn3dXVomH6pM9IkLkq2Y8oh+fh/lYW3MJ/B03URswUTqttgckOlbxY2XHF3vPG6uanSc4dVsLW/wk3wQ==
10611+
1057810612
react-redux@^7.1.1, react-redux@^7.1.3:
1057910613
version "7.1.3"
1058010614
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.1.3.tgz#717a3d7bbe3a1b2d535c94885ce04cdc5a33fc79"
@@ -12130,6 +12164,13 @@ [email protected]:
1213012164
loader-utils "^1.2.3"
1213112165
schema-utils "^2.0.1"
1213212166

12167+
12168+
version "0.3.0"
12169+
resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
12170+
integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
12171+
dependencies:
12172+
inline-style-parser "0.1.1"
12173+
1213312174
styled-components@^4.4.1:
1213412175
version "4.4.1"
1213512176
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.4.1.tgz#e0631e889f01db67df4de576fedaca463f05c2f2"

0 commit comments

Comments
 (0)