简单易懂的React魔法(05):什么是 React Props?

当你使用react组件时你可以给它输入数据。这些数据被称为props。它们是只读的,声明了组件最基础的状态。在JSX中,props就像HTML属性。为了证明这一点,我们来修改我们的应用以至于Detail组件可以从别的地方接收数据。
修改index.js 包含以下代码:
src/index.js

import React from 'react';
import ReactDOM from 'react-dom';

import Detail from './pages/Detail';

ReactDOM.render(
    <Detail message="This is coming from props!" />,
    document.getElementById('app')
);

注意新的 message="This is coming from props!"给Detail传入了参数。在Detail.js 我们需要接受这个参数 message取代原来手写的值:

src/pages/Detail.js

import React from 'react';

class Detail extends React.Component {
    render() {
        return <p>{this.props.message}</p>;
    }
}

export default Detail;

注意我直接将this.props.message写在大括号里,这样表示JSX里面的是js代码而不是字符串。当应用被编译时这部分会当作代码执行,以便我们不需要拼接字符串。回到浏览器,屏幕上的字符串应该会自动更新。

在我们继续之前,我想进一步说明props不是严格只读的,你非要赋值也可以。不过最好还是别这么做,你应该确保props对子组件(Detail.js)是只读的,只在创建这些props的组件(index.js)里改变他们。也就是说,如果你创建了一个组件,它接收了props,你可以改变这些props,但是你不应该去改变这个props。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,858评论 1 18
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,072评论 0 29
  • 现在 render() 里的代码是这样的:src/pages/Detail.js 在大括号里的ES6代码将会在编译...
    誅诺阅读 2,655评论 0 0
  • 最近看了一本关于学习方法论的书,强调了记笔记和坚持的重要性。这几天也刚好在学习React,所以我打算每天坚持一篇R...
    gaoer1938阅读 1,717评论 0 5
  • 每个人每天都与不同的人打交道,每天都在搅尽脑汁的说话,好累啊!就像女儿老说的那句:累死本宝宝啦!哈哈哈。今天...
    婳雨阅读 215评论 0 1