React(2)React的嵌套和组件实例

x33g5p2x  于2022-03-06 转载在 其他  
字(0.9k)|赞(0)|评价(0)|浏览(630)

3、嵌套

被嵌套的目标可以是函数或者类,需要以大写字母开头:

函数是 return 的返回值,类是 render 函数的返回值;

示例:

  1. // 被嵌套
  2. function Foo() {
  3. return <h3>这是一个h3标签</h3>
  4. }
  5. // 嵌套到目标
  6. ReactDOM.render(
  7. <div>
  8. <Foo/>
  9. <p>当前时间是:{formatDate(new Date())}</p>
  10. </div>,
  11. document.getElementById('root')
  12. )

核心是函数名/类名是 Foo,所以嵌套的地方的标签名也为 Foo,并且是一个闭合标签。

类的写法:

  1. class Foo extends React.Component {
  2. // 如果只是单纯的显示DOM,这里的构造函数可以省略
  3. constructor(props) {
  4. super(props)
  5. }
  6. render() {
  7. return <h3>这是一个h3标签</h3>
  8. }
  9. }

4、组件

组件实例必须继承于 React.Component

组件是一个完整的系统,而 React 的 DOM 元素,只是 html 片断。

  1. // 继承于 React.Component
  2. // 类名必须大写字母开头
  3. class HelloWord extends React.Component {
  4. constructor(props) {
  5. // 调用 this 前必须先执行 super(props) ,理由是es6规则
  6. super(props);
  7. // 通过 state 设置组件变量
  8. this.state = {
  9. world: 'world'
  10. }
  11. // 调用方法时,方法的 this 指向组件实例(也就是没啥特别的地方)
  12. this.log()
  13. }
  14. // 渲染函数,this 指向实例本身
  15. render() {
  16. console.log(this)
  17. return <div className={domClass}>
  18. Hello,{this.state.world}!
  19. </div>
  20. }
  21. log() {
  22. console.log(this)
  23. }
  24. }

相关文章