ReactJS-未定义元素

时间:2019-06-05 05:04:58

标签: javascript css reactjs

我下面有此组件,并且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;

2 个答案:

答案 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');