美文网首页
react核心概念-传递元素

react核心概念-传递元素

作者: 5cc9c8608284 | 来源:发表于2023-08-07 20:58 被阅读0次

传递元素内容

内置组件:div、h1、p

<div>
asdfafasfafasdfasdf
</div>

如果给自定义组件传递元素内容,则React会将元素内容作为children属性传递过去。

练习

demo1:圣杯布局
ThreeLayout组件

import React from 'react';
import './index.css'

export default function ThreeLayout(props) {
  const defaultProps={
    leftWidth:200,
    rightWidth:200,
    minWidth:800,
    gap:0
  }
  const datas=Object.assign({},defaultProps,props)
  return (
    <div className='threelayout' style={{minWidth:datas.minWidth,height:300}}>
      <div className='main'>{props.children}</div>
      <div className='left-side' style={{minWidth:datas.leftWidth,marginRight:datas.gap}}>{props.left}</div>
      <div className='right-side' style={{minWidth:datas.rightWidth,marginLeft:datas.gap}}>{props.right}</div>
    </div>
  )
}

index.css样式文件

.threelayout{
    display:flex;
}
.threelayout .main{
    flex:1 1 auto;
    order:2;
    border:1px solid #e60000
}
.threelayout .left-side{
    order:1;
    background:lightblue

}
.threelayout .right-side{
    order:3;
    background:yellowgreen
}

在入口文件中使用

import React from "react";
import ReactDOM from 'react-dom';
import ThreeLayout from "./components/ThreeLayout";
const container=document.getElementById('root');


ReactDOM.render(
  <ThreeLayout
  left={<div>左侧区域内容</div>}
  right={<div>右侧区域内容</div>}
  gap={30}
  >
    <div>主区域内容</div>
  </ThreeLayout>,container);

demo2:制作一个蒙层组件
Modal文件夹
index.js文件

import React from 'react'
import './index.css'
export default function Modal(props) {
    const defaultProps={
        bg:'rgba(0,0,0,0.5)'
    }
    const datas=Object.assign({},defaultProps,props)
  return (
    // 点击蒙层背景关闭蒙层
    <div style={{background:datas.bg}} className='modal' onClick={(e)=>{
        if(e.target.className==='modal'){//处理事件冒泡 只有点击的是modal本身才关闭蒙层
            datas.toggle(!datas.isShow)
        }
    }}>
        <div className="modal-center">
                {datas.children}
            </div>
    </div>
  )
}

index.css文件

.modal{
    position: fixed;
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
}
.modal-center{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

Test.jsx组件中使用:

import React, { Component } from 'react'
import Modal from './Modal'
export default class Test extends Component {

    constructor(props){
        super(props);
        this.state={
            showModal:false 
        }
        this.handleToggle=this.handleToggle.bind(this)
    }
    handleToggle(){
    this.setState({
        showModal:!this.state.showModal
    })
    }
  render() {
    const img=<img style={{width:'100%'}} alt='向阳而生' src="https://tse4-mm.cn.bing.net/th/id/OIP-C.Mh_hsy1ou7stl89_Eol7XwHaHa?w=201&h=201&c=7&r=0&o=5&dpr=1.5&pid=1.7" />
    return (
      <div>
        {img}
        {this.state.showModal?(<Modal toggle={this.handleToggle} isShow={this.state.showModal}>
      <button onClick={()=>this.handleToggle()}>关闭蒙层</button>
        </Modal>):null}
        <button style={{marginTop:'15px'}} onClick={()=>{this.handleToggle()}}>{this.state.showModal?'关闭蒙层':'打开蒙层'}</button>
      </div>
    )
  }
}

今天就练习到这里了,明天要继续加油!

相关文章

  • React Native常用组件----View

    一、 JSX和组件的概念 React的核心机制之一就是虚拟DOM:可以在内存中创建的虚拟DOM元素。React利用...

  • React native 常用组件之View

    一、 JSX和组件的概念React的核心机制就是虚拟DOM,可以在内存中创建的虚拟DOM元素,React利用虚拟D...

  • React Native常用组件之View

    一、 JSX和组件的概念 React的核心机制之一就是虚拟DOM:可以在内存中创建的虚拟DOM元素。React利用...

  • React Native实战系列第四篇 — View组件

    一、 JSX和组件的概念 React的核心机制之一就是虚拟DOM:可以在内存中创建的虚拟DOM元素。React利用...

  • 目录引导

    核心概念高级指引React APIHOOK

  • React核心概念

    1.JSX语法 2.组件 3.props 4.ref 5.state

  • React 核心概念

    JSX JSX 是一个表达式,JSX的值是一个JS对象,因此可以再if for代码块中使用JSX,也可以将JSX赋...

  • react核心概念

    创建虚拟DOM对象 react会自动遍历数组 组件:具有特定功能的代码集合(html+css+js) props:...

  • React 核心概念

    参考: React Docs: MAIN CONCEPT[https://reactjs.org/docs/hel...

  • 进阶学习6-装饰器/迭代器/生成器

    总结 描述备注函数核心概念1函数可以赋值给变量函数核心概念2函数可以作为参数传递函数核心概念3嵌套函数函数核心概念...

网友评论

      本文标题:react核心概念-传递元素

      本文链接:https://www.haomeiwen.com/subject/naigpdtx.html