react组件&props

组件&props

组件,从概念上类似于 JavaScript 函数。它接受任意的入参(即 “props”),并返回用于描述页面展示内容的 React 元素。

函数组件与 class 组件

React可以通过 class 和 函数 **两种形式创建组件, 但是在函数组件中打印this**,我们获取的是undefined. 这个问题我们暂时先不讨论, 大家知道有这两种方式,接下来还是用我们熟悉的 class形式进行演示.

var msg = 'hello,world';
class HelloWorld extends React.Component {
  render(){
    return (
      <div>
        <h2>{msg}</h2>
      </div>
    )
  }
}
// 通过调用React自身方法render可以得到当前组件的实例对象,并渲染到页面容器.
ReactDOM.render(<HelloWorld />,document.getElementById('root'));

比如函数形式:

var msg = 'hello,world';
function HelloWorld(){
  console.log(this); // undefined
  return (
    <div>
      <h2>{msg}</h2>
    </div>
  )
}
// 通过调用React自身方法render可以得到当前组件的实例对象,并渲染到页面容器.
ReactDOM.render(<HelloWorld />,document.getElementById('root'));

组合组件

组件可以随意组合和嵌套,我们把三个 <HelloWorld/>组件放到 <Demos /> 组件中,并且渲染<Demos /> 组件.
注意: 任何组件有且只有一个 根节点 .

var msg = 'hello,world';
class HelloWorld extends React.Component {
  render(){
    return (
      <div>
        <h2>{msg}</h2>
      </div>
    )
  }
}
class Demos extends React.Component {
  render(){
    return (
      <div>
        <HelloWorld/>  
        <HelloWorld/>  
        <HelloWorld/>  
      </div>
    )
  }
}


// 通过调用React自身方法render可以得到当前组件的实例对象,并渲染到页面容器.
ReactDOM.render(<Demos />,document.getElementById('root'));

props给组件传参

props是组件的属性,可以通过props获取组件外部传递的属性和值. 可以同时传递多个参数,通过参数名称获取.

var msg = 'hello,world';
class HelloWorld extends React.Component {
  render(){
    return (
      <div>
        <h2>组件: {this.props.value}</h2>
        {this.props.componentName?<p>{this.props.componentName}</p>:<p>未命名</p>}
      </div>
    )
  }
}
class Demos extends React.Component {
  render(){
    return (
      <div>
        <HelloWorld value={1} componentName="组件1"/>  
        <HelloWorld value={2}/>  
        <HelloWorld value={3}/>  
      </div>
    )
  }
}
// 通过调用React自身方法render可以得到当前组件的实例对象,并渲染到页面容器.
ReactDOM.render(<Demos />,document.getElementById('root'));

Props 的只读性

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

猜你喜欢

转载自blog.csdn.net/m0_67388537/article/details/131937401