加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

重构伟大的React组件:编写高效且可读组件的5个优越实践

发布时间:2019-10-30 14:38:57 所属栏目:移动互联 来源:王强
导读:题目 React.js 已成为 Web 组件中很受接待的视图库。一起进化下来,它成长出了浩瀚特征,现在已成为建设优越的 Web 应用措施的一套完备器材。 它的社区经验了发作式增添,尤其在已往的 2-3 年中,收集上呈现了成千上万有关这项技能的教程。 因此,每位初学
副问题[/!--empirenews.page--]

 题目

React.js 已成为 Web 组件中很受接待的视图库。一起进化下来,它成长出了浩瀚特征,现在已成为建设优越的 Web 应用措施的一套完备器材。

重构伟大的React组件:编写高效且可读组件的5个优越实践

它的社区经验了发作式增添,尤其在已往的 2-3 年中,收集上呈现了成千上万有关这项技能的教程。

因此,每位初学者在开始进修 React 时都应该做一件工作,那就是阅读其文档或教程进而建设他们的第一个组件,就像我在 Codeworks 上开始我的进修旅途一样:

https://codeworks.me/?utm_source=medium&utm_medium=organic&utm_campaign=marco_ghiani_hackernoon_how_to_write_clean_react_components

但我的题目是:你能必定你的 React 组件遵循了优越实践吗?简朴来说,它们是不是正常事变呢?

脏组件长什么样

为了更好地声名我的概念,让我们来看看下面的 React 组件:

  1. import React from 'react'; 
  2. import './Listcomponent.css'; 
  3. class Listcomponent extends React.Component { 
  4.  constructor(props) { 
  5.  super(props); 
  6.  this.state = { 
  7.  lastClickedButton: '' 
  8.  }; 
  9.  } 
  10.  render() { 
  11.  return ( 
  12.  <div> 
  13.  <hl>The last clicked button is {this.state.lastClickedButton}</hl> 
  14.  <ul> 
  15.  <li> 
  16.  <button 
  17.  onClick={() => { 
  18.  this.setState({ lastClickedButton: 'Create' }); 
  19.  this.props.createSomething(); 
  20.  }} 
  21.  className="my-button"> 
  22.  Create 
  23.  </button> 
  24.  </li> 
  25.  <li> 
  26.  <button 
  27.  onClick={() => { 
  28.  this.setState({ lastClickedButton: 'Read' }); 
  29.  this.props.readSomething(); 
  30.  }} 
  31.  className="my-button"> 
  32.  Read 
  33.  </button> 
  34.  </li> 
  35.  <li> 
  36.  <button 
  37.  onClick={() => { 
  38.  this.setState({ lastClickedButton: 'Update' }); 
  39.  this.props.updateSomething(); 
  40.  }} 
  41.  className="my-button"> 
  42.  Update 
  43.  </button> 
  44.  </li> 
  45.  <li> 
  46.  <button 
  47.  onClick= {() => { 
  48.  this.setState({ lastClickedButton: 'Destroy' }); 
  49.  this.props.destroySomething(); 
  50.  }} 
  51.  className="my-button"> 
  52.  Destroy 
  53.  </button> 
  54.  </li> 
  55.  </ul> 
  56.  </div> 
  57.  ); 
  58.  } 

一个肮脏的 React 组件

这是一个完全正常事变的 React 组件,可以在整个应用措施中多次行使。它渲染了一个按钮列表,这些按钮会触发某个变乱,组件还会表现最近被点击的是哪个按钮。总之很简朴。

你也许会想:“好吧……假如能用,那就没什么题目!”

但假若有人汇报你,此刻这个用 62 行代码写成的组件着适用少得多的代码也能做出来呢?以是我们开始做打扫吧!

1. 优先行使 React Hooks 实现函数组件

跟着 React 16.8 引入 Hooks,我们就可以在类声明中行使函数组件来组成有状态组件(假如我们必要处理赏罚任何逻辑)了。

在本文中,我们不会深入接头类与函数组件或 React Hooks。但在 React 社区中众所周知的是,最好优先建设函数组件,尤其是此刻我们有了 Hooks 这么好用的器材。

Hooks 应承你复用状态逻辑,而无需变动组件条理布局。

接下来让我们看一下第一次重构后组件的样子:

  1. import React, { useState } from 'react'; 
  2. import './ListComponent.css'; 
  3. const ListComponent = props => { 
  4.  const [lastClickedButton, setLastClickedButton] = useState(''); 
  5.  return ( 
  6.  <div> 
  7.  <hl>The last clicked button is {lastClickedButton}</hl> 
  8.  <ul> 
  9.  <li> 
  10.  <button 
  11.  onClick={() => { 
  12.  setLastClickedButton('Create'); 
  13.  props.createSomething(); 
  14.  }} 
  15.  className="my-button"> 
  16.  Create 
  17.  </button> 
  18.  </li> 
  19.  <li> 
  20.  <button 
  21.  onClick={() => { 
  22.  setLastClickedButton('Read'); 
  23.  props.ReadSomething(); 
  24.  }} 
  25.  className="my-button"> 
  26.  Read 
  27.  </button> 
  28.  </li> 
  29.  <li> 
  30.  <button 
  31.  onClick={() => { 
  32.  setLastClickedButton('Update'); 
  33.  props.updateSomething(); 
  34.  }} 
  35.  className="my-button"> 
  36.  Update 
  37.  </button> 
  38.  </li> 
  39.  <li> 
  40.  <button 
  41.  onclick={() => { 
  42.  setLastClickedButton('Destroy'); 
  43.  props.DestroySomething(); 
  44.  }} 
  45.  className="my-button"> 
  46.  Destroy 
  47.  </button> 
  48.  </li> 
  49.  </ul> 
  50.  </div> 
  51.  ); 
  52. }; 

用 React Hooks 重组成函数组件很好,我们的组件已经短一些了,我们还删除了 类 语法,但如故必要做很多优化事变。

2. 操作好它!

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读