好客租房71-高阶组件使用步骤

简介: 好客租房71-高阶组件使用步骤

使用步骤

1创建一个函数 名称约定以with开头

2制定函数参数 参数应该以大写字母开头(作为要渲染的组件)

3在函数内部创建一个类组件 提供复用的状态逻辑代码 并返回

4在该组件中 渲染参数组件 同事将状态通过props传递给参数组件

   //导入react

   import React from 'react'

   import ReactDOM from 'react-dom'

   

   //导入组件

   // 约定1:类组件必须以大写字母开头

   // 约定2:类组件应该继承react.component父类 从中可以使用父类的方法和属性

   // 约定3:组件必须提供render方法

   // 约定4:render方法必须有返回值

   import img from "./1.png"

   

   //创建高阶组件

   function withMouse(WrappedComponent){

       class Mouse extends React.Component{

   

           //鼠标状态

           state={

               x:0,

               y:0

           }

           componentDidMount=()=>{

               window.addEventListener('mousemove',this.handeleMove)

           }

           handeleMove=e=>{

               this.setState({

                   x:e.clientX,

                   y:e.clientY

               })

           }

           componentWillUnmount(){

               window.removeEventListener('mousemove',this.handeleMove)

           }

           render(){

               return <WrappedComponent {...this.state}></WrappedComponent>

           }

       }

       return Mouse

   }

   const Position=props=>

       (<p>鼠标当前位置:(x:{props.x},y:{props.y})</p>)

   

       const Cat=props=>(

           <img src={img} alt="猫"

                        style={{position:"absolute",

                        top:props.y,

                        left:props.x,

                        width:"100px",

                        height:"100px"}}/>

       )

   

       

   

   const MousePosition=withMouse(Position)

   const CatPosition=withMouse(Cat)

   class App extends React.Component {

       constructor(props) {

           super(props)

           console.log('生命周期钩子函数:construtor')        

       }

       //初始化state

       //1进行dom操作

       //2发送网络请求  

       render() {

           console.log('生命周期钩子函数:render')

           return (

               <div id="title">

                   <h1>render props模式</h1>

                  <MousePosition></MousePosition>

                  <CatPosition></CatPosition>

                 

                   

               </div>

           )

       }

   }

   

   

   

   ReactDOM.render(<App></App>, document.getElementById('root'))

运行结果

图片.png

相关文章
|
存储 前端开发 安全
dapp矩阵公排互助预约排单抢单项目系统开发指南流程丨案例设计丨功能逻辑丨规则玩法丨项目方案丨源码程序
需求分析:与团队明确系统的需求和目标,包括公排互助预约排单抢单项目系统的功能、规则、奖励机制等方面。
|
前端开发
好客租房45-react组件基础综合案例-6边界问题
好客租房45-react组件基础综合案例-6边界问题
99 0
好客租房45-react组件基础综合案例-6边界问题
好客租房80-组件更新机制
好客租房80-组件更新机制
115 0
好客租房80-组件更新机制
|
定位技术
好客租房170-地图找房的一个封装流程
好客租房170-地图找房的一个封装流程
76 0
好客租房170-地图找房的一个封装流程
|
前端开发
好客租房40-react组件基础综合案例-案例需求分析
好客租房40-react组件基础综合案例-案例需求分析
118 0
好客租房40-react组件基础综合案例-案例需求分析
好客租房92-路由的基本使用
好客租房92-路由的基本使用
86 0
好客租房92-路由的基本使用
好客租房59-组件的生命周期三个阶段-1创建时
好客租房59-组件的生命周期三个阶段-1创建时
115 0
好客租房59-组件的生命周期三个阶段-1创建时
|
消息中间件 NoSQL 中间件
化繁为简,这波全局拓扑图相当可!
一起来看看全局拓扑图如何帮助用户面对复杂的微服务系统观测时化繁为简~
635 0
化繁为简,这波全局拓扑图相当可!
好客租房70-高阶组件
好客租房70-高阶组件
77 0

热门文章

最新文章