React中的props和state

一、props

react中的prop是从外部传递给组件的数据。

给组件的prop赋值:

<SelectTagModel
  params='params'
  visible={this.state.showTagsModel}
  onCancel={this.handleCancel.bind(this, 'tags')}
  onOk={this.handleOk.bind(this)}
  tags={tagsData['Book']}
  handleCommitTags={this.handleCommitTags.bind(this)}
  selTags={this.state.tagsArr} />

上述组件中的属性,即为调用此组件的父组件通过prop传递给SelectTagModel组件的值。

从prop中取值:

class SelectTagModal extends React.Component {
  constructor() {
    super();
  }
}

组件内部需要调用super(),才能够使用prop中的值。

在组件内部还可以使用propTypes检查组件中属性中的数据类型:

static get propTypes() {
  return {
    params: PropTypes.string.isRequired,
    visible: PropTypes.boolean.isRequired,
    onCancel: PropTypes.fn,
    onOk: PropTypes.func,
    tags: PropTypes.object.isRequired,
    handleCommitTags: PropTypes.func,
    selTags: PropTypes.array.isRequired
  };
}

二、state 

驱动组件渲染过程的除了prop,还有state,state代表组件的内部状态,记录自身的数据变化。

组件内初始化state:

class SelectTagModal extends React.Component {
  constructor() {
    super();
    this.state = {
      selectedTags: []
    };
  }
}

读取state的值:this.state.xxx;

更新state的值:this.setState({ xx: y });

三、state和props的区别:

a、prop用于定义外部接口,state用于记录内部状态;

b、prop的赋值在外部世界使用组件时调用,而state的赋值在组件内部;

c、组件不应该改变传入的prop的值,而state存在的目的就是在组件内部来改变的;

  注意:在使用过程中不应该去修改传入的props的值。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值