Я впервые пытаюсь построить блог в Гэтсби.Я использую Gatsby Starter Blog в качестве основы.
Я хочу добавить javascript для анимации текста, и в качестве быстрого теста я добавил ниже к своему html.js
file:
<script
dangerouslySetInnerHTML={{
__html: `
var name = 'world';
console.log('Hello ' + name);
console.log('hey');
const phrases = [
'aaa',
'bbb',
'ccc'
];
const el = document.getElementById('bio__subtext');
el.innerHTML = 'hi';
`,
}}
/>
Однако в моей консоли выдается следующая ошибка: (index):15 Uncaught TypeError: Cannot read property 'innerHTML' of null
Идентификатор правильный и существует в моем файле Bio.js:
class Bio extends React.Component {
render() {
return (
<div id="bio">
<div className="bio_wrapper">
<img
src={profilePic}
alt={'NdW'}
/>
<p>
Hi, I'm Natalie!<br />
I <span id="bio__subtext"></span><br/>
<span className="about_button"><a href="/">Find out more</a></span>
<a href="#" target="_blank">GH</a>
<a href="#" target="_blank">TW</a>
</p>
</div>
</div>
)
}
}
Я предполагаю, что это потому, что JS пытается запустить до завершения Bio.js ... но как мне сказать JS "ждать"?Если я попытаюсь включить JS в файл Bio.js, он не скомпилируется.
Добавление document.addEventListener("DOMContentLoaded", function(event) {
также не поможет.