我下面有此组件,并且changeColor()
函数引起的错误导致错误消息:
TypeError:无法设置未定义的属性“颜色”
这是组件中的唯一错误。其他所有东西都正常运行。可以很好地获取JSON数据,并且组件渲染也很好。当然,是在我实现了阻止应用程序的功能changeColor()
之前。
import React, { Component } from 'react'
var data = require('./db.json');
class Cronology extends Component {
constructor(props) {
super(props)
this.state = {
cronology: [],
year: "",
description: ""
}
this.changeColor = this.changeColor.bind(this)
}
componentDidUpdate() {
this.setState({
cronology: data.cronology
})
this.changeColor();
}
changeColor() {
document.querySelectorAll('p').style.color = 'red'
}
render() {
return (
<table>
{
this.state.cronology && this.state.cronology.map(
(i) => {
return (
<tr>
<th className="column1">• {i.year}</th>
<th className="column2"><p>{i.description}</p></th>
</tr>
)
}
)
}
</table>
)
}
}
export default Cronology;
答案 0 :(得分:4)
您的changeColor()
方法正在使用document.querySelectorAll('p')
,该方法返回一个集合。您必须定位特定元素。
document.querySelectorAll('p')[0].style.color = "red"
https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
答案 1 :(得分:1)
作为对他人答案的补充,您可以使用forEach
,即:
document.querySelectorAll('p').forEach(el => el.style.color = 'red');