我目前正在尝试将类组件(工作)更改为功能组件(不工作)。基本上,我的目标是使元素位于页面中心。
编辑:如果任何人都可以发表评论ref={tc=>(this.treeContainer=tc)},这也会非常有帮助!
我的班级组件(有效):
/**
* Component returning a div containing a tree
* Need to declare as class for ComponentDidMount()
*/
class CenterMe extends React.PureComponent {
state={}
/* Used to center the tree on render */
componentDidMount() {
const dimensions = this.treeContainer.getBoundingClientRect();
this.setState({
translate: {
x: 30,
y: dimensions.height / 2
}
});
}
/* Returns the actual tree content */
render(){
return(
<div class="treeWrapper" ref={tc => (this.treeContainer = tc)}>
<Tree
translate = {this.state.translate}
/>
</div>
);
}
}
我当前的功能组件看起来像这样并且不起作用:
function CenterMe() {
const [state, setState] = useState({translate:{x:0,y:0}); // Added thanks to @jstu
/* Used to center the tree on render */
useEffect(()=> {
const dimensions = treeContainer.getBoundingClientRect();
setState({
translate: {
x: 30,
y: dimensions.height / 2
}
});
});
/* Returns the actual tree content */
return(
<div class="treeWrapper" ref={tc => (this.treeContainer = tc)}>
<Tree
translate = {this.state.translate}
/>
</div>
);
}
更具体地说,它抱怨 setState 和 treeContainer 没有定义。如果重要的话,树组件是从react-d3-tree导入的,翻译函数基本上按照字面意思做——它移动树。我认为问题主要集中在ref={tc=>(this.treeContainer=tc)},所以对此的解释也有帮助。太感谢了!
潇潇雨雨
元芳怎么了
汪汪一只猫
相关分类