将状态设置为返回另一个状态的函数

时间:2017-03-24 11:22:25

标签: javascript reactjs binding

我有两个states,一个state设置为一个数字,另一个设置为function returns第一个状态。我收到错误:

  

未捕获的TypeError:无法读取属性' count'未定义的

以下是摘录:

  constructor(props) {
    super(props);
    this.state = {
      count: 5,
      date: this.full()
    };
  };
  full = () => {
    return this.state.count;
  };

这里是codepen链接: http://codepen.io/abdolsa/pen/wJXPqb?editors=0010

我认为这可能是binding的问题,但我还没有解决它。

谢谢

1 个答案:

答案 0 :(得分:0)

你做错了。分配给this.state内部构造函数的值不是availbale直到初始渲染。如果要在componentWillMountcomponentDidMount方法中设置具有其他状态值的状态,请执行此操作。

如果您这样做:

 full = () => {
    return 5;
  };//it will work.

所以解决方案是,

class Clock extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 5,
      date: ""
    };
    this.full = this.full.bind(this);
  };
  componentWillMount ()
    {
        this.setState({date:this.full()})
    }
  full = () => {

    return (this.state.count);
  };
  render() {
    console.log(this.state)
    return (
        <h2>{this.state.date}.</h2>
    );
  }
}
ReactDOM.render(<Clock />, document.getElementById('root'));