当前位置: 首页 > news >正文

价格低性价比高的汽车/搜索引擎优化

价格低性价比高的汽车,搜索引擎优化,提升学历图片,如何做一份网站的数据分析一、组件 定义组件的两种方式 1.函数组件 const Ren function () {return (<div>奥特曼</div>) }2.类组件 class Head extends Component {render () {return (<div>我是封装出来的组件</div>)} } 使用的话直接当成标签来用就好了 注意首字母大写…

一、组件

定义组件的两种方式

1.函数组件

const Ren = function () {return (<div>奥特曼</div>)
}

2.类组件

class Head extends Component {render () {return (<div>我是封装出来的组件</div>)}
}

使用的话直接当成标签来用就好了 注意首字母大写哈

const root = ReactDOM.createRoot(document.getElementById('root'))root.render(<React.StrictMode><Ren /><Head></Head></React.StrictMode>
)

二、父传子

定义形式  <组件名  属性名=属性值></组件名>

import React, { Component } from 'react'
import ReactDOM from 'react-dom/client' //配合ceact把react 元素渲染到domimport SonFirst from './02、子组件1'
import SonSecond from './02、子组件2'
import Third from './02、子组件3'
class Father extends Component {state = {userInfo: {name: '奥特曼'},tags: <h1>奥特曼</h1>}render () {return (<div>我是父组件 class类{/* 定义形式 属性名=属性值 */}<SonFirst num={1}></SonFirst><SonSecond userInfo={this.state.userInfo}></SonSecond><Third tags={this.state.tags}></Third></div >)}
}const root = ReactDOM.createRoot(document.getElementById('root'))root.render(<React.StrictMode><Father /></React.StrictMode>
)

类组件接收

/* eslint-disable react/prop-types */
import React, { Component } from 'react'export default class Son extends Component {render () {return (<div>{this.props.num}我是子组件</div>)}
}

通过 this.props.num 接收 

函数组件接收

/* eslint-disable react/prop-types */
import React from 'react'export default function Son (props) {return (// eslint-disable-next-line react/prop-types<div>{props.num}我是函数的子组件</div>)
}

 事件参数 第一个参数就是 props对象 

 props 可以传递 数字、字符串、布尔类型、数组、对象、函数、jsx

不可以直接修改 props穿过来的值 若想修改 可以传递方法 去修改父组件的值

传递jsx

import Son from './04、子组件'
export default class Father extends Component {render () {return (<div><Son><h1>奥特曼噢噢噢噢~~</h1></Son></div>)}
}

 子

/* eslint-disable react/prop-types */
import React, { Component } from 'react'// props的children 类似于 slot 插槽·
export default class Son extends Component {render () {console.log(this.props)return (<div>{this.props.children}</div>)}
}

子组件可以直接去使用哈

传递方法demo 

import React, { Component } from 'react'
import ReactDOM from 'react-dom/client' //配合ceact把react 元素渲染到domimport Son from './05、子组件'
class Father extends Component {state = {list: [{ id: 1, name: '迪迦', num: 10, price: 9 }, { id: 2, name: '雷欧', num: 5, price: 10 }, { id: 3, name: '泰罗', num: 6, price: 7 }],allPrice: 0}accPrice = (price) => {console.log(price, this.state.allPrice)this.setState({allPrice: this.state.allPrice + price})}addNum = (idx) => {let arr = [...this.state.list]arr[idx].num++this.setState({arr})}render () {const { list } = this.statereturn (<>{list.map((it, idx) => {return <Son accPrice={this.accPrice} addNum={this.addNum} idx={idx} info={it} key={it.id}></Son>})}<div>总价:{list.reduce((acc, it) => acc + it.num * it.price, 0)}</div></>)}
}const root = ReactDOM.createRoot(document.getElementById('root'))root.render(<React.StrictMode><Father /></React.StrictMode>
)

子 

/* eslint-disable react/prop-types */
import React, { Component } from 'react'export default class Son extends Component {add = () => {console.log(this.props)this.props.addNum(this.props.idx)}render () {console.log(this.props)const { info, idx } = this.props// this.props.accPrice(info.price * info.num)return (<div><div style={{ padding: '20px', width: '400px', border: '1px solid #000' }}><div ><div> 名字: {info.name}</div><div> 数量: {info.num}  <button onClick={this.add}>+1</button> </div><div> 价钱: {info.price}</div><div> 总价: {info.price * info.num} </div></div></div ></div>)}
}

props的三个特点:

1.可以传任何内容

2.只读的,不可以直接修改

3.遵守单项数据流原则(一层一层往下传)

三、兄弟传值

兄弟传值  a组件使用父组件的值  b组件通过父组件的传递过来的方法进行修改  没有像vue中的vuex、eventbus

import React, { Component } from 'react'
import ReactDOM from 'react-dom/client' //配合ceact把react 元素渲染到domimport Son1 from './06、兄弟1'
import Son2 from './06、兄弟2'
class Father extends Component {state = {num: 1}addNum = () => {this.setState({num: this.state.num + 1})}render () {const { list } = this.statereturn (<><Son1 addNum={this.addNum} ></Son1><Son2 num={this.state.num}></Son2></>)}
}const root = ReactDOM.createRoot(document.getElementById('root'))root.render(<React.StrictMode><Father /></React.StrictMode>
)

子1

/* eslint-disable react/prop-types */
import React, { Component } from 'react'export default class SON extends Component {add = () => {this.props.addNum()}render () {return (<div><button onClick={this.add}>数量加1</button></div>)}
}

 子2

/* eslint-disable react/prop-types */
import React, { Component } from 'react'export default class SON extends Component {render () {return (<div>{this.props.num}</div>)}
}

四、跨级传值

使用方法

1. 导入并调用createContext方法 从结果中结构出 provider,consumer 组件

import React, { createContext } from 'react'
const { Provider, Consumer } = createContext()

2. 使用Provider 组件包裹根组件 并通过value属性提供要共享的数据

 return (<Provider value={ 传递的数据 }><根组件的内容 /></Provider>)

记得导出 export { Consumer } 

 3.在任意后代组件中 使用第1步导出Consummer组件 在包裹住整个组件

import { Consumer } from './07、跨级传值'export default class Parent extends React.Component {render () {return (<Consumer>{(data) => {console.log(data)return (<>内容</>)}}</Consumer>)}
}

demo

顶层组件

import React, { Component, createContext } from 'react'
import ReactDOM from 'react-dom/client' //配合ceact把react 元素渲染到dom
const { Provider, Consumer } = createContext()import Fathers from './07、子组件'class Grandpa extends Component {state = {num: 1}addNum = (number) => {this.setState({num: this.state.num + number})}render () {return (<><Provider value={{ num: this.state.num, add: this.addNum }}><Fathers></Fathers></Provider></>)}
}
export { Consumer }
const root = ReactDOM.createRoot(document.getElementById('root'))root.render(<React.StrictMode><Grandpa /></React.StrictMode>
)

 父组件

import React from 'react'
import ReactDOM from 'react-dom'
import Son from './07、孙组件'
import { Consumer } from './07、跨级传值'
export default class Parent extends React.Component {state = {num: 1}addNum = () => {this.setState({num: this.state.num + 1})}render () {return (<Consumer>{(data) => {console.log(data)return (<><div onClick={() => data.add(100)}>我是Father组件-{data.num}</div><Son></Son></>)}}</Consumer>)}
}

子组件 

import React, { Component, createContext } from 'react'
import ReactDOM from 'react-dom/client' //配合ceact把react 元素渲染到dom
import { Consumer } from './07、跨级传值'export default class Son extends Component {state = {num: 1}addNum = () => {this.setState({num: this.state.num + 1})}render () {return (<Consumer>{(data) => {console.log(data)return (<div onClick={() => data.add(100)}>我是son组件-{data.num}</div>)}}</Consumer>)}
} 

抽离跨级组件

import React from 'react'
const { Provider, Consumer } = React.createContext()
export { Provider, Consumer }

父组件

import React, { Component, createContext } from 'react'
import ReactDOM from 'react-dom/client' //配合ceact把react 元素渲染到dom
import { Provider } from './08、context'
import Son from './08、子组件'
class Father extends Component {state = {num: 1}addNum = () => {this.setState({num: this.state.num + 1})}render () {return (<><Provider value={this.state.num}><Son></Son></Provider></>)}
}const root = ReactDOM.createRoot(document.getElementById('root'))root.render(<React.StrictMode><Father /></React.StrictMode>
)

子组件


import { Consumer } from './08、context'
import React, { Component } from 'react'
export default class Son extends Component {render () {return (<Consumer>{(data) => {return (<><div onClick={() => data.add(100)}>我是Son组件-{data}</div></>)}}</Consumer>)}
}

推荐插件

 在项目中 打出rcc rfc 就可以 快捷创建代码啦

rcc: create  class Componet

rfc: create function Componet

http://www.lbrq.cn/news/1382311.html

相关文章:

  • wordpress手机大标题/重庆旅游seo整站优化
  • 重庆网页设计/seo推广官网
  • 网站建设方案书 人员安排/百度搜索排名靠前
  • 淘宝网站建设策划书/自媒体发布平台有哪些
  • 西部数码网站工具/网页搜索快捷键
  • 台州中兴建设咨询有限公司网站/百度网盘app怎么打开链接
  • wordpress影视主题带采集/seodao cn
  • 做网站费用会计科目/线下推广宣传方式有哪些
  • 武汉高端网站制作公司/外贸网站建设案例
  • 成都 网站设计/北京网站优化推广方案
  • 长春建站优化加徽信xiala5效果好/2024新闻热点事件
  • 苏州地区网站制作/百度高级搜索页面的网址
  • 中国住房和城乡建设部查询网站6/seo顾问推推蛙
  • wordpress不正确css/许昌seo公司
  • 个人网站命名技巧/app拉新平台
  • 外贸seo网站/百度分公司
  • 如何用自己网站做大电商/网站seo重庆
  • 济南网站建设服务/郑州网站建设用户
  • 南京网站制作链接/做整站优化
  • 网站建设赚钱吗/怎样制作一个网站
  • 网站建设项目化教程/百度权重排名查询
  • h5响应式网站源码/网店无货源怎么做
  • 技术支持 网站建设/seo基础知识培训
  • 网站包括什么/产品市场推广方案
  • 如何查询企业有没有做网站/网站建设山东聚搜网络
  • 最好免费高清影视/杭州网站排名seo
  • a站与b站/网址缩短
  • 滨州做网站建设价格/杭州百度快照优化公司
  • 网站搜索引擎提交/百度推广怎么注册账号
  • 网站平台建设实施方案/外贸找客户有什么网站
  • 【Rust多进程】征服CPU的艺术:Rust多进程实战指南
  • 简述:关于二轮承包地确权二轮承包输出数据包目录结构解析
  • 高效管理Hosts文件的终极工具
  • SQL158 每类视频近一个月的转发量/率
  • Export useForm doesn‘t exist in target module
  • umijs局域网访问警告Disconnected from the devServer,trying to reconnect...