props与state的区别

9 篇文章 0 订阅

父组件通过props向子组件传递数据。父组件通过item={item}这种方式向子组件传递数据,子组件通过this.props.item 来获取数据。

//父组件
<ul className="list">
   <todos.map((item,index)=>{
       return <Item item={item}/>   
  })}
</ul>
 
//子组件
class Item extends Component{
     render(){
       const item=this.props.item;
       return(
           <li className="item">{item}</li>
       )
   }
}
props是一个从外部传进组件的参数,由于React具有单向数据流,所以它的主要作用是从父组件向子组件传递数据,它是不可改变的。如果想要改变它,只能通过外部组件传入新的props来重新渲染子组件,否则子组件的props以及展现形式不会改变。

props除了可以传字符串、数字,还可以传数组,对象、甚至是回调函数。

 

state的主要作用是用于组件保存、控制以及修改自己的状态,它只能在constructor中初始化,state是可以被改变的。state放改动的一些属性,比如点击选中,再点击取消。类似的这种属性就可以放到state里。

没有state的叫做无状态组件,多用props少用state,多写无状态组件。

class Item extends Component{
    constructor(props){
          super(props);
          this.state={
            selected:false;
         }
还有一点要特别注意,在修改state的值时,直接对它操作是不行的。

//无效的
this.state.selected=!this.state.selected;
必须通过setState()方法。当我们调用this.setState方法时,React会更新组件的数据状态state,并且重新调用render方法.

//有效
this.setState({
    selected:!this.state.selected
});
主要区别:state是组件自己管理数据,控制自己的状态,值是可以改变的;props是外部传入的数据参数,不可变

 

补充:setState可以接受一个函数,函数的前两个蚕食,一个是以前的状态,一个是马上要改变的状态,新的。

this.setState((prevState, props) => ({
  counter: prevState.counter + props.increment
}));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值