IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react第三天 -> 正文阅读

[JavaScript知识库]react第三天

一、react中的state

??每个组件可以拥有自己的data数据,并且这个数据是自己独享

??在react中我们需要使用state(状态)来表示我们每一个组件自己的data数据

? react中state需要在构造函数中进行设置??类似于vue中data???data()?{}

??react中state状态设置

constrcutor(props)?{

????????????super(props)??//?超类

????????????this.state={

????????????????//?data数据

????????????}

????????}

同时?我们需要使用this.state.属性名?来获取?state里边设置的data数据

列如:

 <div id="app"></div>
    <script type="text/babel">
    var num=123
    class Child extends React.Component{
        // 构造函数
        constructor(props) {
            super(props)
            this.state={
                num: 456,
                stus: {
                    name: '张三',
                    age: 15,
                    sex: '男',
                    score: 98
                },
                arr: ['标题一','标题二','标题三'],
                bool: false
            }
        }
        render() {
            return(
                <div className="child">
                    child--{num}--{this.state.num}
                    <p>姓名: {this.state.stus.name}</p>
                    <p>性别: {this.state.stus.sex}</p>
                    <p>{this.state.arr[0]}</p>
                    <p style={{display: this.state.bool?'block':'none'}}>这是一段文本内容</p>
                </div>
            )
        }
    }

二、props的使用

???react中组件之间的关系就两种

????????????父子

????????????非父子

????????props可以作为在react中父组件向子组件传值的一种形式

????????步骤:

????????????1?在父组件中找到子组件标签?在子组件标签上边写上自定义属性名等于要传递的数据

????????????<子组件标签名?自定义属性名="要传递的数据"></子组件标签名>

????????????2?在子组件的模板中?通过this.props.自定义属性名?来获取父组件向子组件传递的数据

????????????{this.props.自定义属性名}

? ? ? ? ? ?state与props关系区别

???????????1?state你可以认为是用来设置组件的data数据

?????????????props是进行组件传值的

???????????2?props是不可变的?但是state可以根据与用户的交互进行动态改变

????????????我们需要通过state来更新或者修改数据??

????????????而子组件只能通过props来获取传递的数据

????????react注释

????????????{/*?要注释的内容?*/}

????????react封装的组件?是独立存在的??即便是同一个组件?被多次调用??但是之间保持独立的关系

????????注意:

????????????react自定义组件标签中不能直接写内容??写了也不显示

????????????如果想要react组件标签中写的内容显示出来?我们需要给自定义的组件模板中使? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?用?this.props.children

????????????例如:

????????????????<自定义组件标签名>内容</自定义组件标签名>

????????????????//?内容可以是任意数据?

????????????????自定义组件的模板中使用?this.props.children

????????????????????return(

????????????????????????<div>{this.props.children}</div>

????????????????????)

 <div id="app"></div>
    <script type="text/babel">
    class Child extends React.Component{
        constructor(props) {
            super(props)
            this.state={
                num: 123
            }
        }
        render() {
            return(
                // <div className="child">child-{this.state.msg}-{this.props.text}-{this.props.name}-{this.props.arr[1]}</div>
                <div className="child">
                    {this.props.children}--child--{this.props.name}-{this.props.text}  {this.props.play}  
                </div>
            )
        }
    }
    // parent是child的父组件
    class Parent extends React.Component{
        constructor(props) {
            super(props)
            this.state={
                msg: 'hello world',
                arr: [1,2,3],
                obj: {
                    name: '张三'
                }
            }
        }
        render() {
            return(
                <div className="parent">
                    parent--{this.state.msg}
                    <Child>
                        <div className="demo">demo测试</div>
                        <Child2></Child2>
                    </Child>
                    <Child name="张三" />
                    <Child name="李四" text="你好"/>
                    <Child name="王五" play="王者荣耀"/>
                    <Child name="马六"></Child>
                    {/* <Child text={this.state.msg} name={this.state.obj.name} arr={this.state.arr} /> */}
                </div>
            )
        }
    }
    class Child2 extends React.Component{
        render() {
            return(
                <div className="child2">child2</div>
            )
        }
    }
    ReactDOM.render(
        <Parent/>,
        document.getElementById('app')
    )
    </script>
</body>

三、使用react props封装button组件

 <div id="app"></div>
</body>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
<script type="text/babel">
class Parent extends React.Component{
  constructor(props){
    super(props)
    this.state={
      lists:["标题一","标题二","标题三"]
    }
  }
  render(){
    return(
      <React.Fragment>
        <div className="parent">这是爹
          <Child list={this.state.lists}></Child>
        </div>
      </React.Fragment>
    )
  }
}
class Child extends React.Component{
  render(){
    return(
      <div className="child">这是儿子
        {this.props.list}
        {this.props.list.map((item,index)=>
          <p >{item}</p>
        )}
      </div>
    )
  }
}
ReactDOM.render(
  <Parent></Parent>,
  document.getElementById("app")
)
</script>

现组件的封装

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:30:39  更:2021-08-12 16:32:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:06:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码