我正在使用React(v:15.4.2),问题是: 我在A和B页都有A和B页的组件ABC。 从页面A和B传递给ABC的道具是不同的。 但是当我从A转换到B页面并且在ABC中监听回调事件时,它具有旧的prop值(从页面A传递)。
组件ABC如下所示:
class ABC extends React.Component {
constructor(props) {
super(props);
this.state = {
height: 0,
width: 0
};
}
componentDidMount() {
windowStore.addOnAppReSizedListener(this._onResize.bind(this));
this._onResize();
}
componentWillUnmount() {
windowStore.removeOnAppReSizedListener(this._onResize.bind(this));
}
_onResize() {
let parentNode = document.getElementById(this.props.id).parentNode.getClientRects()[0];
this.setState({
height: parentNode.height,
width: parentNode.width
});
}
//i am getting this.props.id of the previous page (A)
the actual error it throws is : **Uncaught TypeError: Cannot read property 'parentNode' of null**
答案 0 :(得分:0)
我认为你的id是一个数字。问题是你实际上没有在任何地方设置状态的属性id?不确定你要用++ Count做什么,因为我没有看到你实际上在任何地方声明它,也不应该用这种方式设置你的状态属性。
class ABC extends React.Component {
constructor(props) {
super(props);
this.state = {
height: 0,
width: 0
};
}
componentDidMount() {
windowStore.addOnAppReSizedListener(this._onResize.bind(this));
this._onResize();
}
componentWillUnmount() {
windowStore.removeOnAppReSizedListener(this._onResize.bind(this));
}
_onResize() {
let parentNode = document.getElementById(this.props.id).parentNode.getClientRects()[0];
this.setState({
height: parentNode.height,
width: parentNode.width
});
}