我不能操纵<div id="chart">无论是在componentWillMount或componentDidMount生命周期方法.
document.getElementById("chart")在两个方法中都返回null.我应该不使用原始DOM操作函数,还是应该使用其他东西来实现相同的操作<div id="chart">
import React from 'react'
export default class D3Chart extends React.Component {
constructor () {
super();
}
componentWillMount() {
document.getElementById("chart").innerText = "Testing";
}
componentDidMount () {
document.getElementById("chart").innerText = "Testing";
}
render() {
return (<div id="chart"></div>
)
};
}
Run Code Online (Sandbox Code Playgroud)
lyo*_*sef 15
import React from 'react';
import ReactDOM from 'react-dom';
export default class D3Chart extends React.Component {
constructor () {
super();
}
componentDidMount () {
this.refs.chart.innerText = "Testing";
}
render() {
return <div id="chart" ref="chart"></div>;
}
}
Run Code Online (Sandbox Code Playgroud)
这是小提琴.
ref是您访问节点的方式,类似于HTML中的id
this.refs.myDiv;
<div ref='myDiv' />
Run Code Online (Sandbox Code Playgroud)
,keyReact是如何区分相似节点的.方法cloneElement(用于向实例化的JSX模板添加额外的道具)维护这些引用,因此您不必担心"丢失"对象引用.
还有一个更复杂/不同/下一代的光:
当附加
[ref]到DOM组件时<div />,您将获得DOM节点; 当附加[ref]到复合组件时<TextInput />,您将获得React类实例.在后一种情况下,如果在其类定义中公开了任何方法,则可以调用该组件上的方法.
render () {
return (
<div ref={htmlOrComponent => { this.htmlOrComponent = htmlOrComponent }}
);
}
componentDidMount () {
// this.htmlOrComponent is either the HTML or null
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10690 次 |
| 最近记录: |