React从入门到项目--第二天(React三大属性state,props,ref)

今天了解到了React的三大属性,分别是stateprops还有ref。三大属性是必不可少的,而且这三大属性,和vue中的三个属性差不多,有很大的相似之处。

state

state是组件对象最重要的属性, 值是对象(可以包含多个数据),组件被称为"状态机", 通过更新组件的state来更新对应的页面显示(重新渲染组件),就是网页包含的数据。

state初始化数据

state在constructor中进行初始化声明,直接通过【this.state=对象】的方式添加初始化数据。

constructor(props){
    super(props);
    this.state = {
        StringData: 'name',
        NumberData: 10,
        ArrayData: [1,2,3,4,5]
    };		
}

state读取数据 

state数据的读取一般在render中使用,直接通过【 this.state.数据名称 】的方式获取想要的状态。

const todos = this.state.todos;

const {todos} = this.state;

state更新数据 

在React中,直接使用【this.state.数据名称】是不能够对状态进行更改的,需要调用实例对象的setState方法,setState需要传递一个对象,即更改的数据。而且更新数据一般在读数据之后。

()=>{
    const {number} = this.state;
    number++;
    this.setState({number})
}

props

每个组件对象都会有props属性,组件标签的所有属性都保存在props中,所有组件标签的属性的集合对象,它的作用是通过标签属性从组件外向组件内传递变化的数据,对props中的属性值进行类型限制和必要性限制,使用比较新的react版本,需要引入prop-types.js这个文件。在react典型的数据流中,props传递是父子组件交互的唯一方式;通过传递一个新的props值来实现父子组件通信。

限制props的数据类型和必需性

在接收数据的页面需要引入prop-types.js文件,而且从父组件传递过来的数据或者函数,在组件接收时,第一件要做的就是去限制所传递数据的数据类型,以及是否必须传递,不同的是Function要写成func。

Person.propTypes = {
    name: React.PropTypes.string,
    addUser: React.PropTypes.func.isRequired
}

读取数据 

在读取数据之前要通过constructor的super将数据给到组件实例对象,之后可直接通过【this.props】的方式进行数据的读取,传递过来的数据为只读的,不可以进行修改。

constructor(props){
    super(props);		
}

//读取数据
this.props.addUser(user);

 传递数据

父组件可以通过props向子组件传递想要的数据,即在子组件标签中写入自定义属性值加属性名

<Add count={todos.length} addTodo={this.addTodo} />

<List todos={todos}/>

ref

ref可以挂到任何组件上,可以挂到组件上也可以是dom元素上。挂到组件(这里组件指的是有状态组件)上的ref表示对组件实例的引用,挂载到dom元素上时表示具体的dom元素节点。ref是React提供的用来操纵React组件实例或者DOM元素的接口,通过ref获取组件内容特定标签对象, 进行读取其相关数据。有些场景需要获取某一个真实的DOM元素来交互,这时候就要用到React的refs属性。

简单使用方式:

<input type="text" ref="input" />

this.refs.input.value

推荐使用方式:

<input type="text" ref={(input)=>this.input = input} />

this.input.value

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ღ故里᭄ꦿ࿐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值