Node.js 之react.js组件-Props应用

render props是指一种在 React 组件之间使用一个值为函数的 prop 共享代码(个人理解:将组件进行函数化,通过调用组件名实现,组件的利用,以元素的形式调用,并渲染画面)

具有 render prop 的组件接受一个函数,该函数返回一个 React 元素并调用它而不是实现自己的渲染逻辑。

具体实例(代码来自官网):URL:https://zh-hans.reactjs.org/docs/render-props.html#___gatsby

笔记:代码中实现的组件调用,是将一个组件组为一个标签元素,通过props方法,作为新组件的标签引用(以下代码,相同颜色为组件与元素的关系)

重要的是要记住,render prop 是因为模式才被称为 render prop ,你不一定要用名为 render 的 prop 来使用这种模式。任何被用于告知组件需要渲染什么内容的函数 prop 在技术上都可以被称为 “render prop”.

/ <Mouse> 组件封装了我们需要的行为...

class Mouse extends React.Component {

constructor(props) {

super(props);

this.handleMouseMove = this.handleMouseMove.bind(this);

this.state = { x: 0, y: 0 };

}

handleMouseMove(event) {

this.setState({

x: event.clientX,

y: event.clientY

});

}

render() {

return (

<div style={{ height: ‘100%‘ }} onMouseMove={this.handleMouseMove}>

{/* ...但我们如何渲染 <p> 以外的东西? */}

<p>The current mouse position is 但我们如何渲染 以外的东西({this.state.x}, {this.state.y})</p>

</div>

);

}

}

class Cat extends React.Component {

render() {

const mouse = this.props.mouse;

return (

<img src="/cat.jpg" style={{ position: ‘absolute‘, left: mouse.x, top: mouse.y }} />

);

}

}

class MouseWithCat extends React.Component {

constructor(props) {

super(props);

this.handleMouseMove = this.handleMouseMove.bind(this);

this.state = { x: 0, y: 0 };

}

handleMouseMove(event) {

this.setState({

x: event.clientX,

y: event.clientY

});

}

render() {

return (

<div style={{ height: ‘100%‘ }} onMouseMove={this.handleMouseMove}>

{/*

我们可以在这里换掉 <p> 的 <Cat>   ......

但是接着我们需要创建一个单独的 <MouseWithSomethingElse>

每次我们需要使用它时,<MouseWithCat> 是不是真的可以重复使用.

*/}

<Cat mouse={this.state} />

</div>

);

}

}

class MouseMove extends React.Component {

render() {

return (

<div>

<h1>移动鼠标!</h1>

<MouseWithCat /> //实现以上组件的全部调用

</div>

);

}

}

原文地址:https://www.cnblogs.com/yilizhongzi-yilisha/p/11623927.html

时间: 2024-10-09 08:31:02

Node.js 之react.js组件-Props应用的相关文章

Angular.js、React.js整合

必备知识 Requirejs.Angularjs.Reactjs,可查看本博客写的相关内容进行必备知识了解. 整合Angular.js.React.js 本人在angular.js之爱恨情仇中已提到过Angular.js的性能问题,而React.js基于virtual dom的方式渲染页面,在性能上有不错的表现,所以在系统中整合了React.js. Requirejs配置 requirejs.config({ baseUrl: '/', paths: { 'jquery': 'libs/jque

MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js 概念摘录

转自:http://www.cnblogs.com/xishuai/p/mvc-mvp-mvvm-angularjs-knockoutjs-backbonejs-reactjs-emberjs-avalonjs.html MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是将 M 和 V 的实现代码分离,从而使同一个程序可以使用不同的表现形式. 交互方式(所有通信都是单向的): View 传送指令到 Contro

Node.js 之react.js组件-JSX简介

JSX 简介 const element = <h1>Hello, world!</h1>; 以上为一个JSX,我的理解(简单理解带有HTML标签的变量元素). 简介:是一个 JavaScript 的语法扩展.我们建议在 React 中配合使用 JSX,JSX 可以很好地描述 UI 应该呈现出它应有交互的本质形式.JSX 可能会使人联想到模版语言,但它具有 JavaScript 的全部功能. JSX 可以生成 React “元素”. 为什么使用 JSX? React 认为渲染逻辑本

vue.js与react.js相比较的优势

vue.js的简介 vue.js是一个javascript mvvm库,它是以数据驱动和组件化的思想构建的.我们平时多用js去操作dom,vue.js则是使用了数据绑定驱动来操作dom的,也就是说创建了view和model之间的绑定后,当model数据层发生变化时,view的dom就会发生相应变化. mvvm即是model-view-viewmodel,model和view之间的衔接交互都是通过viewmodel来实现的.viewmodel就是创建一个vue实例,vue实例是作用于某一个dom元

Angular、React.js 和Node.js到底选谁?

为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情,但在这种情况下,对于到底应该选择哪种框架,程序员之间并没有一致的意见,每个人都有不同的想法,并且听起来都相当合理. 为了让一切归于和谐,本文就来探究一下这三大框架各自的优缺点. 基础知识部分: 在我们深入研究这三种框架的具体细节之前,先来了解一些前情提要.yigouyul22.com xucaiz

Vue.js与React的全面对比

Vue与React的对比 Vue.js与React.js从某些反面来说很相似,通过两个框架的学习,有时候对一些用法会有一点思考,为加深学习的思索,特翻阅了两个文档,从以下各方面进行了对比,加深了对这两个框架的认知. 1.数据绑定 1.1 Vue中有关数据绑定的部分 vue是双向绑定, Vue.js 最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统.所谓双向绑定,指的是vue实例中的data与其渲染的DOM元素的内容保持一致,无论谁被改变,另一方会相应的更新为相同的数据.这是通过设置属性

基于 React.js + Redux + Bootstrap 的 Ruby China 示例

最近在学习前端的各大流行框架, 主要学习了 Vue.js 和 React.js, 前段时间用 Vue.js + uikit 实现了 V2EX 的克隆版本, 最近又用 React.js + redux + bootstrap 实现了 RubyChina 的克隆版本, 两个项目都支持响应式布局. 不得不说这是学习新知识的一个有效途径. 这两个项目都比较合适学习 Vue.js 和 React.js 的朋友参考. Vue.js + V2EX 项目 代码地址: https://github.com/liu

React.js学习笔记(一):组件协同与mixin

组件协同: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>父子关系</title> </head> <body> <script src="react.js"></script> <script src="JSXTran

React.js第二天,优化第一天的最后一个组件

废话不多说,直接上代码了 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="javascripts/react.js"></script> <script src="javascripts/reac