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.x},{mouse.y}

}/> } } //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(, document.getElementById("root"));

效果

react render props模式实现组件复用示例_第1张图片

react render props模式实现组件复用示例_第2张图片

react render props模式实现组件复用示例_第3张图片

二 组件的复用

实现鼠标移动,图片移动

import imgage from "./images/cat2.gif"
 
class App extends React.Component {
 
    render() {
        return  {
            return 猫
        }}>
    }
}

效果:图片跟着鼠标走

react render props模式实现组件复用示例_第4张图片

react render props模式实现组件复用示例_第5张图片

完整代码

import React from "react";
import ReactDOM from "react-dom";
import imgage from "./images/cat2.gif"
 
class App extends React.Component {
 
    render() {
        return  {
            return 猫
        }}>
    }
}
 
//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(, document.getElementById("root")
);

三 使用children名代替属性

react render props模式实现组件复用示例_第6张图片

react render props模式实现组件复用示例_第7张图片

 代码

import React from "react";
import ReactDOM from "react-dom";
import imgage from "./images/cat2.gif"
 
class App extends React.Component {
 
    render() {
        return 
            {mouse => {
                return 猫
            }}
        
    }
}
 
//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(, document.getElementById("root")
);

react render props模式实现组件复用示例_第8张图片

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

你可能感兴趣的:(react render props模式实现组件复用示例)