好客租房68-render-props模式-4children代替

简介: 好客租房68-render-props模式-4children代替

注意:并不是该模式render Props就必须使用名为render的props,实际上可以使用任意名称

props

把props是一个函数并且告诉组件渲染什么内容的技术叫做render props模式

推荐 使用children代替render属性

   //导入react

   import React from 'react'

   import ReactDOM from 'react-dom'

   

   //导入组件

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

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

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

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

   import img from "./1.png"

   

   

   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>

                   {/* <Mouse render={(mouse)=>{

                       return <p>

                           鼠标位置:{mouse.x}-{mouse.y}

                       </p>

                   }}/> */}

                    <Mouse >

                    {mouse=>{

                        return (<p>

                            鼠标位置:{mouse.x}-{mouse.y}

                        </p>)

                    }}

                    </Mouse>

                    <Mouse >

                    {mouse=>{

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

                        style={{position:"absolute",

                        top:mouse.y,

                        left:mouse.x,

                        width:"100px",

                        height:"100px"}}/>)

                    }}

                    </Mouse>

   

                   {/* <Mouse >

                   { (mouse)=>()

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

                       style={{position:"absolute",

                       top:mouse.y,

                       left:mouse.x,

                       width:"100px",

                       height:"100px"

                   }

                   </Mouse> } */}

                   

               </div>

           )

       }

   }

   

   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

           })

       }

       //监听鼠标移动事件

       render(){

           return this.props.children(this.state)

       }

   }

   

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

运行结果

图片.png

相关文章
|
4月前
|
前端开发 JavaScript
【掰开揉碎】react中的super(props)
【掰开揉碎】react中的super(props)
|
4月前
|
前端开发
第二十四章 案例TodoList 之props限制
第二十四章 案例TodoList 之props限制
|
JavaScript 前端开发 容器
|
前端开发
好客租房54-props深入(children属性)
好客租房54-props深入(children属性)
167 0
好客租房54-props深入(children属性)
|
前端开发 JavaScript
好客租房66-render-props模式-2使用模式
好客租房66-render-props模式-2使用模式
86 0
好客租房66-render-props模式-2使用模式
|
前端开发 JavaScript
好客租房67-render-props模式-3演示mouseover的组件的复用
好客租房67-render-props模式-3演示mouseover的组件的复用
95 0
好客租房67-render-props模式-3演示mouseover的组件的复用
好客租房143-react-virtualized3让list组件占满整个屏幕
好客租房143-react-virtualized3让list组件占满整个屏幕
125 0
好客租房143-react-virtualized3让list组件占满整个屏幕
|
前端开发 JavaScript
好客租房21-react组件的两种创建方式(函数组件)
好客租房21-react组件的两种创建方式(函数组件)
92 0
好客租房21-react组件的两种创建方式(函数组件)
|
前端开发 JavaScript
React关于constructor与super(props)之间的相爱相杀
我们先把菜鸟教程的一段代码拿过来分析一下。下面这段代码是用了将生命周期方法添加到类中实现时钟效果
React关于constructor与super(props)之间的相爱相杀
好客租房65-render-props模式-1思路分析
好客租房65-render-props模式-1思路分析
77 0