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性能优化达到最大化的方法 immutable.js使用的必要性
这篇文章主要为大家详细介绍了react性能优化达到最大化的方法,一步一步优化react性能的过程,告诉大家使用immutable.js的必要性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-03-03React合成事件及Test Utilities在Facebook内部进行测试
这篇文章主要介绍了React合成事件及Test Utilities在Facebook内部进行测试,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-12-12
最新评论