• 二、react的组件-state-props-setState


    目标

    1. 理解组件和组件的创建、以及能够根据实际场景去划分合理的组件。
    2. 理解并且能够灵活的应用组件中的state、props。
    3. 可以使用组件去实现各种前端交互。

    知识点

    1. 组件的定义:组件能够表示一块视图的结构表现以及逻辑交互,并且可以重复利用。
    2. 如何创建组件(2中方式)
    1. // 函数是组件
    2. // 没有状态,只有属性
    3. function ComponentName(props){
    4. return 虚拟dom
    5. }
    6. // 类组件
    7. // 有状态也有属性
    8. class ComponentName extends React.Component{
    9. static defaultProps = {
    10. // 默认属性
    11. }
    12. state = {
    13. // 状态
    14. }
    15. render(){
    16. return 虚拟dom
    17. }
    18. }

    1. 组件中的状态(state)是和组件的视图对应的,状态决定了视图的呈现,每个组件都有自己独立的状态。组件的内部的状态是可以随意改变的,状态的改变意味着视图的呈现也发生了变化。

    2. 组件中的属性(props)是来在组件调用的时候,从外部传入组件内部的。在组件内部属性是不能被改变的。属性的数据在一定程度上也决定了视图的呈现。

    3. 想要改变组件内部的状态,从而让视图也跟着更新需要执行this.setState方法

    4. 理解this.setState这个方法的原理,该方法接收两个参数:

    1. this.setState(对象,回调函数)
    2. // 该方法的作用是修改state中的数据,并且让视图更新为和state一致的视图。
    3. // 该方法会把第一个参数接受的对象,和组件的state这个对象进行合并,然后在根据合并后的新对象,去更新视图
    4. // 视图是的更新是异步,所以回调函数的作用就是等待视图更新成功后,才去执行。

    1. 使用props传参的写法,例子如下:
    1. // 父组件 Parent
    2. class Parent extends React.Component{
    3. state = {
    4. title: 'hello world'
    5. }
    6. render(){
    7. return <div>
    8. <Child title={this.state.title} />
    9. </div>
    10. }
    11. }
    12. // 子组件 Child
    13. class Child extends React.Component{
    14. render(){
    15. return <div>
    16. <h1>{this.props.title}</h1>
    17. </div>
    18. }
    19. }
    20. // 该例子演示了,props的用法,可以通过父组件给子组件传递参数。

    1. 可以给一个组件设置默认属性,代码如下:
    1. class HelloWorld extends Component{
    2. static defaultProps = {
    3. // 在这里可以设置默认属性
    4. text: 'hello world'
    5. }
    6. render(){
    7. return
    8. {this.props.text}
  • }
  • }
  • 授课思路

  • 相关阅读:
    C. Where‘s the Bishop?
    shell 初探
    Bean 的作用域和生命周期
    安卓LeakCanary研究
    910数据结构(2020年真题)
    Web jQuery—属性、元素、尺寸和位置
    ADDS:卸载/降级域控制器
    中秋节听夜曲,Android OpenGL 呈现周董专属的玉兔主题音乐播放器
    python-opencv学习笔记1 opencv中的GUI特征
    SQL语法知识回顾
  • 原文地址:https://blog.csdn.net/weixin_45311714/article/details/127889416