得到旧道具反应js

时间:2017-03-21 10:39:49

标签: reactjs

我正在使用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**

1 个答案:

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