JS每日一题: react中props和state的区别?

Posted JS每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS每日一题: react中props和state的区别?相关的知识,希望对你有一定的参考价值。

20190307期

react中props和state的区别

首先props和state都是用于描述component状态的

在React中,数据总是单向地自上往下流动,组件中的一些状态或者数据的管理有时让人很头疼,尤其是在设计一些组件的时候

State

如果component的某些状态需要被改变,并且会影响到component的render,那么这些状态就应该用state表示。 例如:一个购物车的component,会根据用户在购物车中添加的产品和产品数量,显示不同的价格,那么“总价”这个状态,就应该用state表示。

Props

如果component的某些状态由外部所决定,并且会影响到component的render,那么这些状态就应该用props表示。 例如:一个下拉菜单的component,有哪些菜单项,是由这个component的使用者和使用场景决定的,那么“菜单项”这个状态,就应该用props表示,并且由外部传入

下面我们列举一下两者的区别

应用场景 props state
是否可以从父组件中获取初始值 可以 可以
是否能被父组件改变 可以 不可以
是否能设置默认值 可以 不可以
是否在组件里改变值 不可以 可以
能否给子组件设置初始值 可以 可以
能否在子组件里被改变值 可以 可以

了解了其基本概念后我们再来看一个典型的例子消化一下

 
   
   
 
  1. // 这段代码摘自脚手架react-redux-starter-kit

  2. // 我们可以看到store,history,children都是通过props传递的

  3. // 这样做的好处是在每一个子孙组件实例中都能直接通过this来进行访问

  4. // 当要传递的props过多时,我们也可以通过{...propsData}形式来进行解构传递

  5. render () {

  6. return (

  7. <Provider store={this.props.store}>

  8. <div style={{ height: '100%' }}>

  9. <Router history={browserHistory} children={this.props.routes} />

  10. </div>

  11. </Provider>

  12. )

  13. }

总结

  • props用于定义外部接口,使用state来存储控制当前页面逻辑的数据

  • props的赋值是在父级组件,state赋值在当前组件内部

  • props是不可变的,而state是可变的


最近答题



基友噢如果喜欢,可以分享给好基友噢如果喜欢,可以分享给好基友噢


关注「JS每日一题」,参与答题


以上是关于JS每日一题: react中props和state的区别?的主要内容,如果未能解决你的问题,请参考以下文章

JS每日一题: react 中的高阶组件理解?

JS每日一题: react中类组件和函数式组件中有什么不同?

JS每日一题: react的生命周期有哪些?有什么需要注意的地方?

React入门---属性(props)-8

React中Props 和 State用法

React中state和props分别是什么?