资讯专栏INFORMATION COLUMN

React的10种有效的设计模式

yibinnn / 2720人阅读

摘要:设计的种模式本文翻译自。剩下的肯定都是模式。真实的事实的特异性是网络开发人员死亡的第一原因。这种设计仅仅适用于登陆操作就在主页面内执行,而不是多带带弹出一个模态窗口。这可以正常的工作,但确不是最好的方式。

设计React的10种模式

本文翻译自10 React mini-patterns。这篇文章由mrcode翻译, 如果哪里翻译的不恰当或有错误的地方,欢迎指出。 同时也希望大家关注我的博客。 关注我的账号。

在过去的几年里,我已经做了许多看起来挺不错的React项目。
在这个神奇的旅程中,一些模式出现过很多次,我发现我一次又一次地重复着这些模式。

什么是模式?

这些模式是我想在学习React第一天就知道的事情。
所以如果今天是你第一天学习React,你是如此的幸运。

或者你并不幸运。只有一种方法可以决定你是否是幸运的...

这是一个长长的列表,所以你可以跳过无聊的一些模式, 比如:3,6,8,10。

1. Sending data down and up

我建议大家新学习React的一件事是传递信息的模式(信息可以是对象,字符串等)和传递方法下来允许子组件传递信息给父组件。

就像把一包芯片和一个对讲机送到地下被困的矿工一样。

图片怎么样?
下面的事情是这种模式的最简单的形式。

父组件在左边,子组件在右边。
你可以认为连接这些组件的两个props允许信息在两者之间的任一方向上流动。

被称为items将被传递给子组件, deleteItem将提供给子组件一种方案来发送信息给父组件。

这不是一个真正的模式。剩下的肯定都是模式。我承诺。

2. Fixing HTML’s inputs

React和web组件的一个伟大的事情是,如果在html中的东西不能按你想要的方式工作,你可以解决它。

如果你考虑允许用户输入的不同元素,你很快就会看到这些元素的命名是荒谬的,几乎是鲁莽的。

如果我建立一个将有很多用户输入的网站,我做的第一件事之一是解决这个问题。

还有更多的改进:

输入应该通过onChange方法返回一个值,而不是一个JavaScript事件实例,对不?

你可以进一步确保在onChange返回的数据类型和传递的数据类型相匹配。如果typeof props.value是number,然后将e.target.value回到一个数字,然后再次发出数据。

一组单选按钮在功能上与

但是你不想为你定义的每个输入想出一些聪明和独特的id,谁有时间呢?我不知道你,但我有山羊的视频观看。

(提示:如果您的航班上有一个尖叫的孩子,闭上眼睛,假装您在YouTube上观看的山羊听起来像人类的视频,烦人的声音就会变得很热闹。)

您可以为每个输入/标签对生成随机ID,但是客户端呈现的HTML将与您呈现的服务器呈现的HTML不匹配。这并不是一个好的解决方案
所以,你可以创建一个小的模块,给出一个递增的ID,并在输入组件中使用它,像这样:

class Input extends React.Component {
  constructor(props) {
    super(props);
    this.id = getNextId();
    
    this.onChange = this.onChange.bind(this);
  }
  
  onChange(e) {
    this.props.onChange(e.target.value);
  }
  
  render() {
    return (
      
    );
  }
}

如果getNextId()每次只是增加一个数字,然后在服务器上渲染时,这个数字会继续上升和起来,最终达到无穷大。因此,您需要在每次呈现应用程序时重置该数字(对于每个网络请求)。

你可以在你的应用程序的入口点,使用一个简单的resetId()或任何你认为最好的名称。

考虑到所有这些,你的超级幻想模块可能看起来像这样:

let count = 1;

export const resetId = () => {
  count = 1;
}

export const getNextId = () => {
  return `element-id-${count++}`;
}
4. Controlling CSS with props

当你想在不同的实例(例如"primary"和"secondary"按钮)应用不同的CSS,你可以传递道具来控制要应用的CSS。

这看起来超级简单的表面,但让我向你保证有很多错误的方法来做到这一点(我已经尝试过他们!)。

有 - 我估计 - 三种不同的方式,你可以控制应用于组件的CSS。

使用标志

也许你的一些按钮有圆角,但这不直接对应于您定义的主题。

在这种情况下,你可以坐下你的设计师,并有一致性谈话,或创建一个布尔的道具,可能看起来像这样:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88146.html

相关文章

  • FCC 成都社区·技术周刊 第 12 期

    摘要:详情怎样规避地狱作者先介绍什么是地狱,以及在开发过程中怎样去规避地狱,一时爽性能问题火葬场。详情其他亮点汇总开发者大会已于北京时间月日凌晨在美国山景城正式启幕。 【前端】 1. JavaScript 的新数据类型:BigInt BigInt 是 JavaScript 中的一个新的数字基本(primitive)类型,可以用任意精度表示整数。使用 BigInt 可以安全地存储和操作大整数,...

    fanux 评论0 收藏0
  • FCC 成都社区·技术周刊 第 12 期

    摘要:详情怎样规避地狱作者先介绍什么是地狱,以及在开发过程中怎样去规避地狱,一时爽性能问题火葬场。详情其他亮点汇总开发者大会已于北京时间月日凌晨在美国山景城正式启幕。 【前端】 1. JavaScript 的新数据类型:BigInt BigInt 是 JavaScript 中的一个新的数字基本(primitive)类型,可以用任意精度表示整数。使用 BigInt 可以安全地存储和操作大整数,...

    zzbo 评论0 收藏0
  • FCC 成都社区·技术周刊 第 12 期

    摘要:详情怎样规避地狱作者先介绍什么是地狱,以及在开发过程中怎样去规避地狱,一时爽性能问题火葬场。详情其他亮点汇总开发者大会已于北京时间月日凌晨在美国山景城正式启幕。 【前端】 1. JavaScript 的新数据类型:BigInt BigInt 是 JavaScript 中的一个新的数字基本(primitive)类型,可以用任意精度表示整数。使用 BigInt 可以安全地存储和操作大整数,...

    robin 评论0 收藏0
  • FCC 成都社区·技术周刊 第 12 期

    摘要:详情怎样规避地狱作者先介绍什么是地狱,以及在开发过程中怎样去规避地狱,一时爽性能问题火葬场。详情其他亮点汇总开发者大会已于北京时间月日凌晨在美国山景城正式启幕。 【前端】 1. JavaScript 的新数据类型:BigInt BigInt 是 JavaScript 中的一个新的数字基本(primitive)类型,可以用任意精度表示整数。使用 BigInt 可以安全地存储和操作大整数,...

    jlanglang 评论0 收藏0

发表评论

0条评论

yibinnn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<