我无法通过道具为州设定价值

时间:2017-10-04 08:40:23

标签: reactjs

为什么这段代码不起作用? 我只是想从道具中设置这个类的状态,但状态总是空的。



class BillsList extends React.Component{ 
    constructor (props: any){
            super(props);
            this.state = {currentList : this.props.list};
    };
    render(){
        console.log(this.props.list); //It worked..!
        console.log(this.state.currentList); //But this is empty
        return(
            <div className="bill_list">
                {this.state.currentList.map((item,i)=>
                    <BillsItem key ={i} value={item} />
                )}
            </div>
        )
    }
};
&#13;
&#13;
&#13;

&#39;列表&#39;是像这样的数组对象 enter image description here

2 个答案:

答案 0 :(得分:0)

您应该修改以下代码:

class BillsList extends React.Component{ 
    constructor (props){
            super(props);
            this.state = {currentList : props.list};
    };
    render(){
        console.log(this.props.list); //It worked..!
        console.log(this.state.currentList); //But this is empty
        return(
            <div className="bill_list">
                {this.state.currentList.map((item,i)=>
                    <BillsItem key ={i} value={item} />
                )}
            </div>
        )
    }
};

答案 1 :(得分:0)

我认为你的道具​​是在组件初始化后收到的。因此,在这种情况下,需要使用componentWillReceiveProps来更新状态。 在你的情况下,它想在下面

componentWillReceiveProps(nextProps) {
  if(this.props.list !== nextProps.list) {
    this.setState({
      currentList: nextProps.list,
    });
  }
}