react.js|react学习----组件

组件&Props 函数组件与 class 组件 1.定义组件最简单的方式就是编写 JavaScript 函数:

function Welcome(props) { return Hello, {props.name}; }

该函数是一个有效的 React 组件,因为它接收唯一带有数据的 “props”(代表属性)对象与并返回一个 React 元素。这类组件被称为“函数组件”,因为它本质上就是 JavaScript 函数。
2.你同时还可以使用 ES6 的 class 来定义组件:
class Welcome extends React.Component { render() { return Hello, {this.props.name}; } }

渲染组件 【react.js|react学习----组件】1.之前,我们遇到的 React 元素都只是 DOM 标签:
const element = ;
2.不过,React 元素也可以是用户自定义的组件:
const element = ;
3.当 React 元素为用户自定义组件时,它会将 JSX 所接收的属性(attributes)以及子组件(children)转换为单个对象传递给组件,这个对象被称之为 “props”。
例如,这段代码会在页面上渲染 “Hello, Sara”:
function Welcome(props) { return Hello, {props.name}; }const element = ; ReactDOM.render( element, document.getElementById('root') );

分析:
  1. 我们调用 ReactDOM.render() 函数,并传入 作为参数。
  2. React 调用 Welcome 组件,并将 {name: ‘Sara’} 作为 props 传入。
  3. Welcome 组件将 Hello, Sara 元素作为返回值。
  4. React DOM 将 DOM 高效地更新为 Hello, Sara。
    注意:
    组件名称必须以大写字母开头
    react会将小写字母开头的组件视为原生dom标签
组合组件 组件可以在其输出中引用其他组件。
这就可以让我们用同一组件来抽象出任意层次的细节。
按钮,表单,对话框,甚至整个屏幕的内容:在 React 应用程序中,这些通常都会以组件的形式表示。
function Welcome(props) { return Hello, {props.name}; }function App() { return (
); }ReactDOM.render( , document.getElementById('root') );

提取组件 将组件拆分为更小的组件。
function Comment(props) { return (
react.js|react学习----组件
{props.author.name}
{props.text}
{formatDate(props.date)}
); }

可以拆分为Avatar组件
function Avatar(props) { return ( react.js|react学习----组件 ); }

UserInfo组件
function UserInfo(props) { return (
{props.user.name}
); }

Comment组件
function Comment(props) { return (
{props.text}
{formatDate(props.date)}
); }

Props 的只读性 组件无论是使用函数声明还是通过 class 声明,都决不能修改自身的 props。

    推荐阅读