react 使用总结

本文总结了React开发中的一些关键知识点,包括为何选用Ant Design UI框架、setState的工作原理、React的基本原理与优化、Element与Component的区别、Class Component与Functional Component的选择、refs的用途、keys的作用以及React事件处理逻辑等。此外,还探讨了如何创建React项目、使用Antd Form组件以及props和state的区别等。通过对这些核心概念的理解和最佳实践的掌握,能帮助开发者更好地运用React进行后台管理系统开发。
摘要由CSDN通过智能技术生成

做后台管理系统使用react时,为什么选用ant-design ui框架?

值得借鉴——参考链接:https://mp.weixin.qq.com/s/3ZcH3hvmoXfQIgRWnFfNBQ

1、调用 setState 之后发生了什么?

在代码中调用setState函数之后,React 会将传入的参数对象与组件当前的状态合并,然后触发所谓的调和过程(Reconciliation)。经过调和过程,React 会以相对高效的方式根据新的状态构建 React 元素树并且着手重新渲染整个UI界面。在 React 得到元素树之后,React 会自动计算出新的树与老树的节点差异,然后根据差异对界面进行最小化重渲染。在差异计算算法中,React 能够相对精确地知道哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染。

1.1、react基本原理和优化?

react是用于构建用户界面的JS框架。因此react只负责解决view层的渲染

react做了什么?

  • Virtual Dom模型
  • 生命周期管理
  • setState机制
  • diff算法
  • React patch、事件系统
  • react的 Virtual Dom模型

经过diff算法会计算出virtual dom的差异,然后将这些差异进行实际的dom操作更新页面

参考链接:https://segmentfault.com/a/1190000015648248?utm_source=tag-newest

1.1、redux或者mobx 原理及使用?

 

2、React 中 Element 与 Component 的区别是?

简单而言,React Element 是描述屏幕上所见内容的数据结构,是对于 UI 的对象表述。典型的 React Element 就是利用 JSX 构建的声明式代码片然后被转化为createElement的调用组合。而 React Component 则是可以接收参数输入并且返回某个 React Element 的函数或者类。

3、在什么情况下你会优先选择使用 Class Component 而不是 Functional Component?

在组件需要包含内部状态或者使用到生命周期函数的时候使用 Class Component ,否则使用函数式组件。

4、React 中 refs 的作用是什么?

注意,根据React最新文档,下面这种用法已经被弃用了,统一改为回调函数模式
this.refs.textInput

Refs 是 React 提供给我们的安全访问 DOM 元素或者某个组件实例的句柄。我们可以为元素添加ref属性然后在回调函数中接受该元素在 DOM 树中的句柄,该值会作为回调函数的第一个参数返回:

class CustomForm extends Component {
  handleSubmit = () => {
    console.log("Input Value: ", this.input.value)
  }
  render () {
    return (
      <form onSubmit={this.handleSubmit}>
        <input
          type='text'
          ref={(input) => this.input = input} />
        <button type='submit'>Submit</button>
      </form>
    )
  }
}

上述代码中的input域包含了一个ref属性,该属性声明的回调函数会接收input对应的 DOM 元素,我们将其绑定到this指针以便在其他的类函数中使用。另外值得一提的是,refs 并不是类组件的专属,函数式组件同样能够利用闭包暂存其值:

function CustomForm ({handleSubmit}) {
  let inputElement
  return (
    <form onSubmit={() => handleSubmit(inputElement.value)}>
      <input
        type='text'
        ref={(input) => inputElement = input} />
      <button type='submit'>Submit</button>
    </form>
  )
}

5、React 中 keys 的作用是什么?

Keys 是 React 用于追踪哪些列表中元素被修改、被添加或者被移除(删除)的辅助标识。

一个好的经验法则是:在 map() 方法中的元素需要设置 key 属性。

render () {
  return (
    <ul>
      {this.state.todoItems.map(({task, uid}) => {
        return <li key={uid}>{task}</li>
      })}
    </ul>
  )
}

在开发过程中,我们需要保证某个元素的 key 在其同级元素中具有唯一性。在 React Diff 算法中 React 会借助元素的 Key 值来判断该元素是新近创建的还是被移动而来的元素,从而减少不必要的元素重渲染。此外,React 还需要借助 Key 值来判断元素与本地状态的关联关系,因此我们绝不可忽视转换函数中 Key 的重要性。

这样,有了key属性后,就可以与组件建立了一种对应关系,react根据key来决定是销毁重新创建组件还是更新组件。

  • key相同,若组件属性有所变化,则react只更新组件对应的属性;没有变化则不更新。

  • key值不同,则react先销毁该组件(有状态组件的componentWillUnmount会执行),然后重新创建该组件(有状态组件的constructorcomponentWillUnmount都会执行)

另外需要指明的是:

key不是用来提升react的性能的,不过用好key对性能是有帮助的。

如何有key 数组中删掉一个元素,则会把之前的全部删掉重新再渲染

key的最佳实践

上面说到了,由数组创建的子组件必须有key属性,否则的话你可能见到下面这样的warning:

Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of `ServiceInfo`. See https://fb.me/react-warning-keys for more information.

可能你会发现,这只是warning而不是error,它不是强制性的,为什么react不强制要求用key而报error呢?其实是强制要求的,只不过react为按要求来默认上帮我们做了,它是以数组的index作为key的。

index作为key是一种反模式

在list数组中,用key来标识数组创建子组件时,若数组的内容只是作为纯展示,而不涉及到数组的动态变更&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React可以使用htmlparser来解析HTML字符串,并将其转换为React组件。HTMLParser是一个开源的HTML解析库,它可以将HTML字符串解析成一个DOM树,在React中可以使用这个DOM树来生成React组件。 使用htmlparser需要先安装htmlparser库,可以使用npm或yarn来安装。安装完成后,可以在React组件中引入htmlparser库。 在React组件中,可以调用htmlparser库提供的方法来解析HTML字符串。比如使用htmlparser.parseDOM()方法可以将HTML字符串解析成一个DOM树。解析完成后,可以通过遍历DOM树的方式来构建React组件。 具体的使用步骤如下: 1. 引入htmlparser库: ``` import { parseDOM } from 'htmlparser2' ``` 2. 在React组件中,使用htmlparser解析HTML字符串: ``` const htmlStr = '<div><h1>Hello, World!</h1></div>' const domTree = parseDOM(htmlStr) ``` 3. 遍历DOM树,构建React组件: ``` function convertToReactComponent(domTree) { return domTree.map((node, index) => { const props = node.attribs || {} const children = node.children ? convertToReactComponent(node.children) : null return React.createElement(node.name, { key: index, ...props }, children) }) } const reactComponent = convertToReactComponent(domTree) ``` 在上面的例子中,我们将HTML字符串 `<div><h1>Hello, World!</h1></div>` 解析成一个DOM树,然后通过遍历DOM树的方式构建React组件。 总结来说,React可以使用htmlparser来解析HTML字符串,并通过遍历DOM树的方式来构建React组件。这样可以方便地将现有的HTML结构转换为React组件,并进行进一步的扩展和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值