react render props模式实现组件复用示例

 更新时间:2022年07月22日 09:25:24   作者:梨轻巧  
本文主要介绍了react render props模式实现组件复用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一 render props的使用步骤

1 创建要复用的组件,在组件中提供要复用的状态逻辑代码
2 将要复用的state作为方法的参数,暴露到组件外部

import React from "react";
import ReactDOM from "react-dom";
 
class App extends React.Component {
 
    render() {
        return <Mouse show={(mouse)=><p>鼠标所在位置:{mouse.x},{mouse.y}</p>}/>
    }
 
}
 
//1 创建要复用的组件,在组件中提供要复用的状态逻辑代码
class Mouse extends React.Component {
 
    state = {
        x: 0,
        y: 0
    }
 
    //监听鼠标移动时间
    componentDidMount() {
        window.addEventListener("mousemove", this.handleMouseMove)
    }
 
    //鼠标移动的事件处理
    handleMouseMove = e => {
        this.setState({
            x: e.clientX,
            y: e.clientY
        })
    }
 
    render() {
        //2 将要复用的state作为方法的参数,暴露到组件外部
        return this.props.show(this.state)
    }
}
 
ReactDOM.render(<App/>, document.getElementById("root"));

效果

二 组件的复用

实现鼠标移动,图片移动

import imgage from "./images/cat2.gif"
 
class App extends React.Component {
 
    render() {
        return <Mouse show={mouse => {
            return <img src={imgage} alt='猫' style={{
                position: 'absolute',
                // 为了让鼠标在图片的中间,top减掉了图片的一半高度,left减掉了图片一半的宽度
                top: mouse.y-198,
                left: mouse.x-250
            }}/>
        }}></Mouse>
    }
}

效果:图片跟着鼠标走

完整代码

import React from "react";
import ReactDOM from "react-dom";
import imgage from "./images/cat2.gif"
 
class App extends React.Component {
 
    render() {
        return <Mouse show={mouse => {
            return <img src={imgage} alt='猫' style={{
                position: 'absolute',
                // 为了让鼠标在图片的中间,top减掉了图片的一半高度,left减掉了图片一半的宽度
                top: mouse.y-198,
                left: mouse.x-250
            }}/>
        }}></Mouse>
    }
}
 
//1 创建要复用的组件,在组件中提供要复用的状态逻辑代码
class Mouse extends React.Component {
 
    state = {
        x: 0,
        y: 0
    }
 
    //监听鼠标移动时间
    componentDidMount() {
        window.addEventListener("mousemove", this.handleMouseMove)
    }
 
    //鼠标移动的事件处理
    handleMouseMove = e => {
        this.setState({
            x: e.clientX,
            y: e.clientY
        })
    }
 
    render() {
        //2 将要复用的state作为方法的参数,暴露到组件外部
        return this.props.show(this.state)
    }
}
 
ReactDOM.render(<App/>, document.getElementById("root")
);

三 使用children名代替属性

 代码

import React from "react";
import ReactDOM from "react-dom";
import imgage from "./images/cat2.gif"
 
class App extends React.Component {
 
    render() {
        return <Mouse>
            {mouse => {
                return <img src={imgage} alt='猫' style={{
                    position: 'absolute',
                    // 为了让鼠标在图片的中间,top减掉了图片的一半高度,left减掉了图片一半的宽度
                    top: mouse.y - 198,
                    left: mouse.x - 250
                }}/>
            }}
        </Mouse>
    }
}
 
//1 创建要复用的组件,在组件中提供要复用的状态逻辑代码
class Mouse extends React.Component {
 
    state = {
        x: 0,
        y: 0
    }
 
    //监听鼠标移动时间
    componentDidMount() {
        window.addEventListener("mousemove", this.handleMouseMove)
    }
 
    //鼠标移动的事件处理
    handleMouseMove = e => {
        this.setState({
            x: e.clientX,
            y: e.clientY
        })
    }
 
    render() {
        //2 将要复用的state作为方法的参数,暴露到组件外部
        return this.props.children(this.state)
    }
}
 
ReactDOM.render(<App/>, document.getElementById("root")
);

 到此这篇关于react render props模式实现组件复用示例的文章就介绍到这了,更多相关react render props组件复用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React Native之prop-types进行属性确认详解

    React Native之prop-types进行属性确认详解

    本篇文章主要介绍了React Native之prop-types进行属性确认详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • React项目配置prettier和eslint的方法

    React项目配置prettier和eslint的方法

    这篇文章主要介绍了React项目配置prettier和eslint的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 详解基于React.js和Node.js的SSR实现方案

    详解基于React.js和Node.js的SSR实现方案

    这篇文章主要介绍了详解基于React.js和Node.js的SSR实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • GraphQL在react中的应用示例详解

    GraphQL在react中的应用示例详解

    这篇文章主要为大家介绍了GraphQL在react中的应用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • React18+TS通用后台管理系统解决方案落地实战示例

    React18+TS通用后台管理系统解决方案落地实战示例

    这篇文章主要为大家介绍了React18+TS通用后台管理系统解决方案落地实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • React项目中不需要jQuery原因分析

    React项目中不需要jQuery原因分析

    在Web开发的早期,jQuery是一个革命性的库,它极大地简化了DOM操作、事件处理、动画制作以及Ajax请求等任务,React的出现,jQuery在新项目中的必要性开始受到质疑,本文将探讨为什么在React应用中不需要jQuery,感兴趣的朋友可以参考下
    2024-02-02
  • react-beautiful-dnd 实现组件拖拽功能

    react-beautiful-dnd 实现组件拖拽功能

    这篇文章主要介绍了react-beautiful-dnd 实现组件拖拽功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • 解决react组件渲染两次的问题

    解决react组件渲染两次的问题

    这篇文章主要介绍了解决react组件渲染两次的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • react 创建单例组件的方法

    react 创建单例组件的方法

    这篇文章主要介绍了react 创建单例组件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • React项目搭建与Echarts工具使用详解

    React项目搭建与Echarts工具使用详解

    这篇文章主要介绍了React项目搭建与Echarts工具使用详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论