好客租房72-高阶组件3使用displayName

简介: 好客租房72-高阶组件3使用displayName

react通过displayNameshiyong

设置displayName控制区分不同的组件

   //导入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>
             }
         }
         Mouse.displayName=`WithMouse${getDisPlayName(WrappedComponent)}`
         return Mouse
     }
     function getDisPlayName(WrappedComponent){
         return WrappedComponent.displayName||WrappedComponent.name||'component'
     }
     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'))
相关文章
|
前端开发 JavaScript
好客租房71-高阶组件使用步骤
好客租房71-高阶组件使用步骤
105 0
好客租房71-高阶组件使用步骤
|
定位技术
好客租房170-地图找房的一个封装流程
好客租房170-地图找房的一个封装流程
66 0
好客租房170-地图找房的一个封装流程
|
前端开发
好客租房45-react组件基础综合案例-6边界问题
好客租房45-react组件基础综合案例-6边界问题
93 0
好客租房45-react组件基础综合案例-6边界问题
好客租房123-租房数据渲染
好客租房123-租房数据渲染
139 0
好客租房123-租房数据渲染
好客租房141-react-virtualized1概述
好客租房141-react-virtualized1概述
95 0
好客租房141-react-virtualized1概述
好客租房70-高阶组件
好客租房70-高阶组件
67 0
|
前端开发 JavaScript
好客租房38-非受控组件
好客租房38-非受控组件
100 0
|
前端开发
好客租房1-React基础目标
好客租房1-React基础目标
89 0
|
前端开发 JavaScript
好客租房9-jsx的学习目标
好客租房9-jsx的学习目标
102 0
|
前端开发
好客租房19-react组件基础目标
好客租房19-react组件基础目标
667 0
下一篇
无影云桌面