成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

React的10種有效的設(shè)計(jì)模式

yibinnn / 2955人閱讀

摘要:設(shè)計(jì)的種模式本文翻譯自。剩下的肯定都是模式。真實(shí)的事實(shí)的特異性是網(wǎng)絡(luò)開(kāi)發(fā)人員死亡的第一原因。這種設(shè)計(jì)僅僅適用于登陸操作就在主頁(yè)面內(nèi)執(zhí)行,而不是多帶帶彈出一個(gè)模態(tài)窗口。這可以正常的工作,但確不是最好的方式。

設(shè)計(jì)React的10種模式

本文翻譯自10 React mini-patterns。這篇文章由mrcode翻譯, 如果哪里翻譯的不恰當(dāng)或有錯(cuò)誤的地方,歡迎指出。 同時(shí)也希望大家關(guān)注我的博客。 關(guān)注我的賬號(hào)。

在過(guò)去的幾年里,我已經(jīng)做了許多看起來(lái)挺不錯(cuò)的React項(xiàng)目。
在這個(gè)神奇的旅程中,一些模式出現(xiàn)過(guò)很多次,我發(fā)現(xiàn)我一次又一次地重復(fù)著這些模式。

什么是模式?

這些模式是我想在學(xué)習(xí)React第一天就知道的事情。
所以如果今天是你第一天學(xué)習(xí)React,你是如此的幸運(yùn)。

或者你并不幸運(yùn)。只有一種方法可以決定你是否是幸運(yùn)的...

這是一個(gè)長(zhǎng)長(zhǎng)的列表,所以你可以跳過(guò)無(wú)聊的一些模式, 比如:3,6,8,10。

1. Sending data down and up

我建議大家新學(xué)習(xí)React的一件事是傳遞信息的模式(信息可以是對(duì)象,字符串等)和傳遞方法下來(lái)允許子組件傳遞信息給父組件。

就像把一包芯片和一個(gè)對(duì)講機(jī)送到地下被困的礦工一樣。

圖片怎么樣?
下面的事情是這種模式的最簡(jiǎn)單的形式。

父組件在左邊,子組件在右邊。
你可以認(rèn)為連接這些組件的兩個(gè)props允許信息在兩者之間的任一方向上流動(dòng)。

被稱(chēng)為items將被傳遞給子組件, deleteItem將提供給子組件一種方案來(lái)發(fā)送信息給父組件。

這不是一個(gè)真正的模式。剩下的肯定都是模式。我承諾。

2. Fixing HTML’s inputs

React和web組件的一個(gè)偉大的事情是,如果在html中的東西不能按你想要的方式工作,你可以解決它。

如果你考慮允許用戶(hù)輸入的不同元素,你很快就會(huì)看到這些元素的命名是荒謬的,幾乎是魯莽的。

如果我建立一個(gè)將有很多用戶(hù)輸入的網(wǎng)站,我做的第一件事之一是解決這個(gè)問(wèn)題。

還有更多的改進(jìn):

輸入應(yīng)該通過(guò)onChange方法返回一個(gè)值,而不是一個(gè)JavaScript事件實(shí)例,對(duì)不?

你可以進(jìn)一步確保在onChange返回的數(shù)據(jù)類(lèi)型和傳遞的數(shù)據(jù)類(lèi)型相匹配。如果typeof props.value是number,然后將e.target.value回到一個(gè)數(shù)字,然后再次發(fā)出數(shù)據(jù)。

一組單選按鈕在功能上與。

但是你不想為你定義的每個(gè)輸入想出一些聰明和獨(dú)特的id,誰(shuí)有時(shí)間呢?我不知道你,但我有山羊的視頻觀看。

(提示:如果您的航班上有一個(gè)尖叫的孩子,閉上眼睛,假裝您在YouTube上觀看的山羊聽(tīng)起來(lái)像人類(lèi)的視頻,煩人的聲音就會(huì)變得很熱鬧。)

您可以為每個(gè)輸入/標(biāo)簽對(duì)生成隨機(jī)ID,但是客戶(hù)端呈現(xiàn)的HTML將與您呈現(xiàn)的服務(wù)器呈現(xiàn)的HTML不匹配。這并不是一個(gè)好的解決方案
所以,你可以創(chuàng)建一個(gè)小的模塊,給出一個(gè)遞增的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()每次只是增加一個(gè)數(shù)字,然后在服務(wù)器上渲染時(shí),這個(gè)數(shù)字會(huì)繼續(xù)上升和起來(lái),最終達(dá)到無(wú)窮大。因此,您需要在每次呈現(xiàn)應(yīng)用程序時(shí)重置該數(shù)字(對(duì)于每個(gè)網(wǎng)絡(luò)請(qǐng)求)。

你可以在你的應(yīng)用程序的入口點(diǎn),使用一個(gè)簡(jiǎn)單的resetId()或任何你認(rèn)為最好的名稱(chēng)。

考慮到所有這些,你的超級(jí)幻想模塊可能看起來(lái)像這樣:

let count = 1;

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

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

當(dāng)你想在不同的實(shí)例(例如"primary"和"secondary"按鈕)應(yīng)用不同的CSS,你可以傳遞道具來(lái)控制要應(yīng)用的CSS。

這看起來(lái)超級(jí)簡(jiǎn)單的表面,但讓我向你保證有很多錯(cuò)誤的方法來(lái)做到這一點(diǎn)(我已經(jīng)嘗試過(guò)他們?。?。

有 - 我估計(jì) - 三種不同的方式,你可以控制應(yīng)用于組件的CSS。

使用標(biāo)志

也許你的一些按鈕有圓角,但這不直接對(duì)應(yīng)于您定義的主題。

在這種情況下,你可以坐下你的設(shè)計(jì)師,并有一致性談話(huà),或創(chuàng)建一個(gè)布爾的道具,可能看起來(lái)像這樣:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88146.html

相關(guān)文章

  • FCC 成都社區(qū)·技術(shù)周刊 第 12 期

    摘要:詳情怎樣規(guī)避地獄作者先介紹什么是地獄,以及在開(kāi)發(fā)過(guò)程中怎樣去規(guī)避地獄,一時(shí)爽性能問(wèn)題火葬場(chǎng)。詳情其他亮點(diǎn)匯總開(kāi)發(fā)者大會(huì)已于北京時(shí)間月日凌晨在美國(guó)山景城正式啟幕。 【前端】 1. JavaScript 的新數(shù)據(jù)類(lèi)型:BigInt BigInt?是 JavaScript 中的一個(gè)新的數(shù)字基本(primitive)類(lèi)型,可以用任意精度表示整數(shù)。使用?BigInt?可以安全地存儲(chǔ)和操作大整數(shù),...

    fanux 評(píng)論0 收藏0
  • FCC 成都社區(qū)·技術(shù)周刊 第 12 期

    摘要:詳情怎樣規(guī)避地獄作者先介紹什么是地獄,以及在開(kāi)發(fā)過(guò)程中怎樣去規(guī)避地獄,一時(shí)爽性能問(wèn)題火葬場(chǎng)。詳情其他亮點(diǎn)匯總開(kāi)發(fā)者大會(huì)已于北京時(shí)間月日凌晨在美國(guó)山景城正式啟幕。 【前端】 1. JavaScript 的新數(shù)據(jù)類(lèi)型:BigInt BigInt?是 JavaScript 中的一個(gè)新的數(shù)字基本(primitive)類(lèi)型,可以用任意精度表示整數(shù)。使用?BigInt?可以安全地存儲(chǔ)和操作大整數(shù),...

    zzbo 評(píng)論0 收藏0
  • FCC 成都社區(qū)·技術(shù)周刊 第 12 期

    摘要:詳情怎樣規(guī)避地獄作者先介紹什么是地獄,以及在開(kāi)發(fā)過(guò)程中怎樣去規(guī)避地獄,一時(shí)爽性能問(wèn)題火葬場(chǎng)。詳情其他亮點(diǎn)匯總開(kāi)發(fā)者大會(huì)已于北京時(shí)間月日凌晨在美國(guó)山景城正式啟幕。 【前端】 1. JavaScript 的新數(shù)據(jù)類(lèi)型:BigInt BigInt?是 JavaScript 中的一個(gè)新的數(shù)字基本(primitive)類(lèi)型,可以用任意精度表示整數(shù)。使用?BigInt?可以安全地存儲(chǔ)和操作大整數(shù),...

    robin 評(píng)論0 收藏0
  • FCC 成都社區(qū)·技術(shù)周刊 第 12 期

    摘要:詳情怎樣規(guī)避地獄作者先介紹什么是地獄,以及在開(kāi)發(fā)過(guò)程中怎樣去規(guī)避地獄,一時(shí)爽性能問(wèn)題火葬場(chǎng)。詳情其他亮點(diǎn)匯總開(kāi)發(fā)者大會(huì)已于北京時(shí)間月日凌晨在美國(guó)山景城正式啟幕。 【前端】 1. JavaScript 的新數(shù)據(jù)類(lèi)型:BigInt BigInt?是 JavaScript 中的一個(gè)新的數(shù)字基本(primitive)類(lèi)型,可以用任意精度表示整數(shù)。使用?BigInt?可以安全地存儲(chǔ)和操作大整數(shù),...

    jlanglang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<