props是组件固有的属性集合,其数据由外部传入,一般在整个组件的生命周期中都是只读的,React的API顶层设计也决定了这一点。属性初值通常由React.createElement函数或者JSX中标签的属性值进行传递,并合并到组件实例对象的this.props中。事实上,组件接受静态信息的主要渠道就是props属性。

比如:

 var HelloBox = React.createClass({

      render() {

      return <div>{'Hello'+this.props.myattr }</div>;

      }
    })     React.render(<HelloBox myattr = "world" />,mountNode);

  或者

  

React.render(

    React.createElement(

      HelloBox,

      {myattr:‘world’}

    ),

    mountNode
   );

    props中也会包含一些由React自动填充的数据,this.props.children数组中会包含本组件实例的所有子组件,由React自动填充。另外,还能通过配置实现this.props.context跨级包含上级组件的数据等。

此外,props与state的区别体现在,props不能被所在组件修改,从父组件传进来的属性不会在组件内部更改;state只能在所在组件内部更改,或在外部调用setState函数间接修改状态。



render函数

  render主要流程是检测this.props和this.state,再返回一个单一组件实例,也可以返回null或者false表明不需要渲染任何东西,对应的React渲染一个<noscript>标签来处理。当返回null或false的时候,this.getDOMNode()将返回null。

render函数应该是纯粹的,也就是说,在render函数内不应修改组件state,不读写DOM信息,也不与浏览器交互,比如调用setTimeout就是一种与浏览器的交互。如果确实要与浏览器交互,componentDidMount()中或者其他生命周期方法中设置。

  React组件只能渲染单个根节点。如果想返回多个节点,它们必须被包含在同一个父节点中。

react props与render成员函数的更多相关文章

  1. 8. react 基础 - props 默认值和类型限制 与 Props , State , render 函数 关系

    一. PropTypes 与 DefaultProps 官方文档 1. PropTypes 属性校验 引入 PropTypes import PropTypes from 'prop-types'; ...

  2. 使用React.Fragment替代render函数中div的包裹

    1.在 React 中,render 函数中 return 的内容只能有一个根节点,如果多个元素嵌套,需要用一个标签元素包裹 这个包裹的标签通常用 div,示例如下: class App extend ...

  3. 理解Vue中的Render渲染函数

    理解Vue中的Render渲染函数 VUE一般使用template来创建HTML,然后在有的时候,我们需要使用javascript来创建html,这时候我们需要使用render函数.比如如下我想要实现 ...

  4. react 实现pure render的时候,bind(this)隐患

    react 实现pure render的时候,bind(this)隐患 export default class Parent extends Component { ... render() { c ...

  5. Vue.js 2.x render 渲染函数 & JSX

    Vue.js 2.x render 渲染函数 & JSX Vue绝大多数情况下使用template创建 HTML.但是比如一些重复性比较高的场景,需要运用 JavaScript 的完全编程能力 ...

  6. vue render 渲染函数

    vue render 渲染函数 经常看到使用render渲染函数的示例,而且在一些特殊情况下,确实更好使用,可以更加有效地细分组件,因而借助vue-element-admin来学习一波 render函 ...

  7. Go结构体实现类似成员函数机制

    Go语言结构体成员能否是函数,从而实现类似类的成员函数的机制呢?答案是肯定的. package main import "fmt" type stru struct { testf ...

  8. C++点滴----关于类常成员函数

    关于C++中,类的常成员函数 声明样式为:   返回类型 <类标识符::>函数名称(参数表) const 一些说明: 1.const是函数声明的一部分,在函数的实现部分也需要加上const ...

  9. 为什么 C++ 中成员函数指针是 16 字节?

    当我们讨论指针时,通常假设它是一种可以用 void * 指针来表示的东西,在 x86_64 平台下是 8 个字节大小.例如,下面是来自 维基百科中关于 x86_64 的文章 的摘录: Pushes a ...

随机推荐

  1. 关于优先队列浅析(priority_queue)

    优先队列 greater与less,自定义还有结构体(可以设置2层优先级)  模板; 下面废话不多说直接上程序 注释的很明白 #include<iostream> #include< ...

  2. java学习之匿名内部类

    /*匿名内部类 * * 一般用于抽象类和接口 * 因为他们不能实例化对象所以可以通过匿名内部类来帮助他们实例化 * 下面demo是抽象类的例子 * * */ abstract class Cat{ a ...

  3. Unity3D判断当前所在平台

    Unity3D是一个跨平台的开发工具,支持的平台五花八门,常常开发一款游戏要发布到不同的平台,在不同的平台上会使用不同的代码,难道要我们各平台分别使用一套代码,单独编译一次吗?当然不用了,呵呵.    ...

  4. DotNetty网络通信框架学习之初识Netty

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  5. Ubuntu16.04安装Redis

    前言 Redis是常用基于内存的Key-Value数据库,比Memcache更先进,支持多种数据结构,高效,快速.用Redis可以很轻松解决高并发的数据访问问题:作为实时监控信号处理也非常不错. 环境 ...

  6. Wireshark使用介绍(二):应用Wireshark观察基本网络协议

    TCP: TCP/IP通过三次握手建立一个连接.这一过程中的三种报文是:SYN,SYN/ACK,ACK. 第一步是找到PC发送到网络服务器的第一个SYN报文,这标识了TCP三次握手的开始. 如果你找不 ...

  7. php 中 global 与 $GLOBAL 的区别

    很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是$GLOBALS['var'] 是外部的全局变量$var本身. global $var 是外部$var的同 ...

  8. 关于 DotNetCore 的自定义权限管理

    1.自定义权限需要扩展 Microsoft.AspNetCore.Authentication 实现一套接口 IAuthenticationHandler, IAuthenticationSignIn ...

  9. AtomicReference

    public class AtomicReference<V> implements java.io.Serializable { private static final long se ...

  10. asp.net处理机制管道事件

    自定义的托管模块HTTP模块可以向System.Web.HttpApplication对象注册下面一系列事件: AcquireRequestState 当ASP.NET运行时准备好接收当前HTTP请求 ...