javascript - 用 setTimeout 反应 innerHTML
问题描述
我正在尝试渲染文本,然后在几秒钟后,更改 React 中文本的内容。
所以我尝试的是h1
在我的代码中有一个简单的,然后在componentDidMount
(正确的地方?)做一个简单的:
const node = document.querySelectorAll('#header')[0];
setTimeout(() => {
node.innerHTML = 'second text';
}, 3000);
然后在render
方法中:
render() {
return (
<h1 id="header">test</h1>
)};
我收到一个错误:
无法设置未定义的属性 innerHTML
我用谷歌搜索了一下,发现了一些关于 a 的东西dangerouslySetInnerHTML
,但我真的看不出它与这个简单的例子有什么关系。有什么建议么?
解决方案
我的意思是,如果你使用 React,你应该放弃原始的 DOM 操作(除了少数情况),这通常是个坏主意。
另外,您可以使用 react 声明性模式轻松地做到这一点:
class YourComponent extends React.Component {
constructor (props) {
super(props);
this.state = {
text: 'my text'
};
}
componentDidMount () {
setTimeout(() => {
this.setState({ text: 'my updated text' });
}, 3000);
}
render () {
return <h1>{this.state.text}</h1>;
}
};
推荐阅读
- oracle - oracle中带有多个查询的游标无法编译
- javascript - 如何在 jQuery-validate 中指定已验证的字段
- java - POJO 到 JSON 的转换不适用于以“is”开头的字符串变量
- arrays - 如何在 Julia 的数组中交换一个特定值?
- python - Cifar100 只有 16 个训练图像和 16 个训练标签
- python - 在像 IDLE 这样的 Python shell 中在 VSCode 中运行 Python
- mysql - 如何仅将我的第一个表的一部分加入另一个表?
- xml - 使用 PowerShell 解析 XML 并进行日期比较
- android - 打开图像时如何修复此错误
- r - 删除时间序列中不是实际日期的 NA 值