Reactjs: Uncaught TypeError: Cannot set property 'innerHTML' of null
Reactjs: Uncaught TypeError: Cannot set property 'innerHTML' of null
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
export default class Game extends Component {
constructor(props) {
super(props);
this.myRef = React.createRef();
this.check = this.check.bind(this);
}
drawBackground() {
console.log("worked");
}
check () {
this.myRef.current.innerHTML = "Testing";
{this.drawBackground()}
}
render() {
return (
<div>
<h1 ref={this.myRef} id="foo">bar</h1>
{this.check()}
</div>
);
}
}
我需要在 check
函数中访问 h1
标签内的 text
,但我收到此错误 Reactjs: Uncaught TypeError: Cannot set 属性 'innerHTML' 为空。我遵循了文档。我错过了什么吗?
您需要将值分配给 ref。
您正在将 ref 作为函数传递。
class App extends React.Component {
constructor(props) {
super(props);
this.check = this.check.bind(this);
}
state = {
dom: null
};
drawBackground() {
console.log("worked");
}
componentDidMount() {
this.check();
}
check() {
const innerHTML = ReactDOM.findDOMNode(this.myRef).innerHTML;
setTimeout(
() => (ReactDOM.findDOMNode(this.myRef).innerHTML = "TEST"),
1000
);
console.log(innerHTML);
this.setState({
dom: innerHTML
});
{
this.drawBackground();
}
}
render() {
return (
<div>
<h1 ref={ref => (this.myRef = ref)} id="foo">
bar
</h1>{" "}
//You need to assign the value of the ref to the instance variable
</div>
);
}
}
第一次render()后首先设置ref
查看演示一次demo
您在声明 ref 后立即引用它,因为 ref 对象接收组件的已安装实例作为其当前实例。
如果您尝试同时访问 DOM,它会尝试生成它。 this.myRef 不会 return 任何东西,因为该组件在渲染中没有真正的 DOM 表示。
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
export default class Game extends Component {
constructor(props) {
super(props);
this.myRef = React.createRef();
this.check = this.check.bind(this);
}
drawBackground() {
console.log("worked");
}
check () {
this.myRef.current.innerHTML = "Testing";
{this.drawBackground()}
}
render() {
return (
<div>
<h1 ref={this.myRef} id="foo">bar</h1>
{this.check()}
</div>
);
}
}
我需要在 check
函数中访问 h1
标签内的 text
,但我收到此错误 Reactjs: Uncaught TypeError: Cannot set 属性 'innerHTML' 为空。我遵循了文档。我错过了什么吗?
您需要将值分配给 ref。 您正在将 ref 作为函数传递。
class App extends React.Component {
constructor(props) {
super(props);
this.check = this.check.bind(this);
}
state = {
dom: null
};
drawBackground() {
console.log("worked");
}
componentDidMount() {
this.check();
}
check() {
const innerHTML = ReactDOM.findDOMNode(this.myRef).innerHTML;
setTimeout(
() => (ReactDOM.findDOMNode(this.myRef).innerHTML = "TEST"),
1000
);
console.log(innerHTML);
this.setState({
dom: innerHTML
});
{
this.drawBackground();
}
}
render() {
return (
<div>
<h1 ref={ref => (this.myRef = ref)} id="foo">
bar
</h1>{" "}
//You need to assign the value of the ref to the instance variable
</div>
);
}
}
第一次render()后首先设置ref
查看演示一次demo
您在声明 ref 后立即引用它,因为 ref 对象接收组件的已安装实例作为其当前实例。
如果您尝试同时访问 DOM,它会尝试生成它。 this.myRef 不会 return 任何东西,因为该组件在渲染中没有真正的 DOM 表示。