1、片段Fragment的使用

在之前的开发中,我们总是在一个组件中返回内容时包裹一个div元素:

  1. import React, { PureComponent, Fragment } from 'react'
  2. // 当我们不需要的外层包裹一个dom结构的时候 可以使用Fragment片段 可使用<></>语法糖进行简写
  3. export default class App extends PureComponent {
  4. render() {
  5. return (
  6. // <Fragment>
  7. // <p>文章片段</p>
  8. // <h2>二级标题</h2>
  9. // </Fragment>
  10. <>
  11. <p>文章片段</p>
  12. <h2>二级标题</h2>
  13. </>
  14. )
  15. }
  16. }

我们又希望可以不渲染这样一个div应该如何操作呢?

  • 使用Fragment
  • Fragment 允许你将子列表分组,而无需向DOM添加额外节点

React还提供了Fragment的短语法形式

  • 它看起来像空标签<></>
  • 但是,如果我们需要在Fragment中添加key,那么就不能使用短语法(在数组和列表的循环中需要绑定key值的时候)

当Fragment绑定key值的时候,不可以使用语法糖(不能使用短语法)

  1. import React, { PureComponent, Fragment } from 'react'
  2. // 当我们不需要的外层包裹一个dom结构的时候 可以使用Fragment片段 可使用<></>语法糖进行简写
  3. export default class App extends PureComponent {
  4. constructor(props) {
  5. super(props)
  6. this.state = {
  7. todoList: [
  8. { id: 110, name: '吃饭' },
  9. { id: 111, name: '睡觉' },
  10. { id: 112, name: '打豆豆' },
  11. ]
  12. }
  13. }
  14. render() {
  15. return (
  16. <div>
  17. <h2>待办事项</h2>
  18. <div>
  19. this.state.todoList.map(item => {
  20. return (
  21. // 不可以使用<></>来绑定key值 这里是有问题的
  22. <Fragment key={ item.id }>
  23. <span>id-{ item.id }</span>
  24. <span>项目-{ item.name }</span>
  25. </Fragment>
  26. )
  27. })
  28. </div>
  29. </div>
  30. )
  31. }
  32. }

2、strictMode(严格模式的使用)

StrictMode是一个用来突出显示应用程序中潜在问题的工具

2.1 严格模式的特点:

  • 与Fragment一样,StrictMode不会渲染任何可见的UI
  • 它为其后代元素触发额外的检查和警告
  • 严格模式检查仅在开发模式下运行,它不会影响生产构建
  • 严格模式是一个高阶组件,主要是对包裹在其内部的标签组件进行严格模式的检查,高阶组件的本质是一个函数,这个函数接受一个组件作为参数,返回一个新的组件。

我们可以为应用程序的任何部分、模块或者组件启用严格模式,只会对包裹在其内部的组件进行严格模式的检查。
image.png

2.2 严格模式检查的是什么?

image.png

3、React中的CSS样式

3.1 普通CSS样式的书写

在react的项目开发中,可以直接按照原生的css样式进行书写,但是原生css样式的书写方法存在相应的缺点。

内联样式的使用
11 组件化补充和CSS样式的选择 - 图3
普通css样式的优缺点:
11 组件化补充和CSS样式的选择 - 图4

3.2 CSS Modules的使用

css modules的优点和缺点

11 组件化补充和CSS样式的选择 - 图5

3.3 CSS in javascript

css in js的原理:

11 组件化补充和CSS样式的选择 - 图6

styled-components库的使用

11 组件化补充和CSS样式的选择 - 图7

4、class添加的相关方法

4.1 在vue中给标签添加class类名

11 组件化补充和CSS样式的选择 - 图8

4.2 在react中给标签添加class类名

使用原生的方法添加class
11 组件化补充和CSS样式的选择 - 图9
借助第三方库classnames来添加相应的class
11 组件化补充和CSS样式的选择 - 图10