Skip to content

Commit 4dfcf89

Browse files
committed
docs: fix carbonads
1 parent 9faeff2 commit 4dfcf89

File tree

1 file changed

+38
-10
lines changed

1 file changed

+38
-10
lines changed

docs/src/components/CarbonAds.js

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,45 @@
11
import React from 'react'
22

3+
function buildScript(src, attrs = {}) {
4+
if (typeof document !== 'undefined') {
5+
const script = document.createElement('script')
6+
script.async = true
7+
script.defer = true
8+
Object.keys(attrs).forEach(attr => script.setAttribute(attr, attrs[attr]))
9+
script.src = src
10+
11+
return script
12+
}
13+
}
14+
315
export default function CarbonAds() {
16+
const ref = React.useRef()
17+
418
React.useEffect(() => {
5-
if (window._carbonads) {
6-
window._carbonads.refresh()
7-
}
19+
const script = buildScript(
20+
'//cdn.carbonads.com/carbon.js?serve=CESDV23N&placement=react-querytanstackcom',
21+
{
22+
type: 'text/javascript',
23+
id: '_carbonads_js',
24+
}
25+
)
26+
27+
ref.current.appendChild(script)
828
}, [])
929

10-
return (
11-
<div
12-
dangerouslySetInnerHTML={{
13-
__html: `<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CESDV23N&placement=react-querytanstackcom" id="_carbonads_js"></script>`,
14-
}}
15-
></div>
16-
)
30+
React.useEffect(() => {
31+
const interval = setInterval(() => {
32+
;[...ref.current.children].forEach(child => {
33+
if (child.id.startsWith('carbonads_')) {
34+
ref.current.removeChild(child)
35+
}
36+
})
37+
}, 100)
38+
39+
return () => {
40+
clearInterval(interval)
41+
}
42+
})
43+
44+
return <div ref={ref} />
1745
}

0 commit comments

Comments
 (0)