欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

preact組件案例的使用詳解

 更新時(shí)間:2025年03月11日 09:44:02   作者:不悔哥  
SelectValue是一個(gè)Preact組件,用于創(chuàng)建一個(gè)下拉選擇框,它接收props如value、setfn、options和disabled,用于更新父組件中的值、處理下拉選擇框的值改變事件、顯示選項(xiàng)和禁用或啟用下拉選擇框,本文介紹preact組件案例的使用詳解,感興趣的朋友一起看看吧

制作一個(gè)下拉框

export function SelectValue({value, setfn, options, disabled}) {
  const toInt = x => x == parseInt(x) ? parseInt(x) : x;
  const onchange = ev => setfn(toInt(ev.target.value));
  return html`
<select onchange=${onchange} class="w-full rounded font-normal border py-0.5 px-1 text-gray-600 focus:outline-none text-sm disabled:cursor-not-allowed" disabled=${disabled}>
  ${options.map(v => html`<option value=${v[0]} selected=${v[0] == value}>${v[1]}<//>`) }
<//>`;
};

這段 Preact 組件代碼定義了一個(gè)名為 SelectValue 的函數(shù)組件,用于創(chuàng)建一個(gè)下拉選擇框。 讓我們分解一下它的功能:

組件功能:

  • SelectValue 組件接收以下 props (屬性):
  • value: 當(dāng)前選中的值。
  • setfn: 一個(gè)函數(shù),用于更新父組件中的 value。當(dāng)下拉選擇框的值發(fā)生改變時(shí),會(huì)調(diào)用這個(gè)函數(shù)。
  • options: 一個(gè)數(shù)組,包含了下拉選擇框的選項(xiàng)。每個(gè)選項(xiàng)都是一個(gè)包含兩個(gè)元素的數(shù)組:[value, label],其中 value 是選項(xiàng)的值,label 是選項(xiàng)顯示的文本。
  • disabled: 一個(gè)布爾值,指示下拉選擇框是否禁用。

代碼分解:

1.export function SelectValue({value, setfn, options, disabled}) { ... }:

定義了一個(gè)名為 SelectValue 的函數(shù)組件,并使用了解構(gòu)賦值來(lái)獲取傳入的 props。
export 關(guān)鍵字表示該組件可以被其他模塊導(dǎo)入和使用。
2.const toInt = x => x == parseInt(x) ? parseInt(x) : x;:

定義了一個(gè)名為 toInt 的箭頭函數(shù)。
這個(gè)函數(shù)的作用是將傳入的值 x 轉(zhuǎn)換為整數(shù),如果 x 本身就是一個(gè)整數(shù)。如果 x 不是整數(shù),則保持原樣。
x == parseInt(x) 用于判斷 x 是否可以安全地轉(zhuǎn)換為整數(shù)而不丟失信息。 例如,"1" == parseInt("1") 為真,而 "1.5" == parseInt("1.5") 為假。
這個(gè)函數(shù)用于確保 setfn 接收到的值是整數(shù),如果選項(xiàng)的值是整數(shù)的話。
3.const onchange = ev => setfn(toInt(ev.target.value));:

定義了一個(gè)名為 onchange 的箭頭函數(shù),它將作為 <select> 元素的 onchange 事件處理函數(shù)。
當(dāng)下拉選擇框的值發(fā)生改變時(shí),這個(gè)函數(shù)會(huì)被調(diào)用。
ev.target.value 獲取到當(dāng)前選中的選項(xiàng)的值(字符串類型)。
toInt(ev.target.value) 將獲取到的值傳遞給 toInt 函數(shù),嘗試將其轉(zhuǎn)換為整數(shù)。
setfn(...) 調(diào)用傳入的 setfn 函數(shù),并將轉(zhuǎn)換后的值傳遞給它,從而更新父組件中的 value。
4.return html\\...\;:

使用 Preact 的 html 模板字符串來(lái)定義組件的 JSX 結(jié)構(gòu)。
html\\...\`` 是 Preact 的一個(gè)標(biāo)簽?zāi)0遄置媪浚糜趧?chuàng)建虛擬 DOM 節(jié)點(diǎn)。
5.<select onchange=${onchange} class="w-full rounded font-normal border py-0.5 px-1 text-gray-600 focus:outline-none text-sm disabled:cursor-not-allowed" disabled=${disabled}>:

  • 創(chuàng)建一個(gè) <select> 元素(下拉選擇框)。
  • onchange=${onchange} 將 onchange 函數(shù)設(shè)置為 <select> 元素的 onchange 事件處理函數(shù)。
  • class="..." 設(shè)置 <select> 元素的 CSS 類名,用于控制其樣式。 這些類名看起來(lái)像是來(lái)自 Tailwind CSS。
  • disabled=${disabled} 根據(jù) disabled prop 的值來(lái)禁用或啟用下拉選擇框。

6.${options.map(v => html\\<option value=${v[0]} selected=${v[0] == value}>${v[1]}<//>\)}:

使用 options.map() 方法遍歷 options 數(shù)組,為每個(gè)選項(xiàng)創(chuàng)建一個(gè) <option> 元素。
v 是 options 數(shù)組中的每個(gè)元素,它是一個(gè)包含兩個(gè)元素的數(shù)組:[value, label]。
<option value=${v[0]} selected=${v[0] == value}>${v[1]}<//> 創(chuàng)建一個(gè) <option> 元素。
value=${v[0]} 設(shè)置 <option> 元素的 value 屬性為選項(xiàng)的值。
selected=${v[0] == value} 設(shè)置 <option> 元素的 selected 屬性。如果當(dāng)前選項(xiàng)的值 v[0] 等于組件的 value prop,則該選項(xiàng)會(huì)被選中。
${v[1]} 設(shè)置 <option> 元素的顯示文本為選項(xiàng)的標(biāo)簽。
<//> 是 Preact 中閉合標(biāo)簽的簡(jiǎn)寫形式,相當(dāng)于 </option>。
7.<//>:

閉合 <select> 標(biāo)簽,相當(dāng)于 </select>。
總結(jié):

SelectValue 組件是一個(gè)可復(fù)用的下拉選擇框組件,它接收選項(xiàng)列表、當(dāng)前選中的值以及一個(gè)用于更新值的函數(shù)作為 props。當(dāng)用戶選擇不同的選項(xiàng)時(shí),組件會(huì)調(diào)用 setfn 函數(shù)來(lái)更新父組件中的值。 toInt 函數(shù)用于確保傳遞給 setfn 的值是整數(shù)(如果選項(xiàng)值是整數(shù))。 該組件還支持禁用狀態(tài)。

export function SelectValue({value, setfn, options, disabled}) {
  const toInt = x => x == parseInt(x) ? parseInt(x) : x;
  const onchange = ev => setfn(toInt(ev.target.value));
  return html`
<select onchange=${onchange} class="w-full rounded font-normal border py-0.5 px-1 text-gray-600 focus:outline-none text-sm disabled:cursor-not-allowed" disabled=${disabled}>
  ${options.map(v => html`<option value=${v[0]} selected=${v[0] == value}>${v[1]}<//>`) }
<//>`;
};
function DHCP({}) {
  const [selectedValue, setSelectedValue] = useState(1);
  const options = [
    [1, 'Option 1'],
    [2, 'Option 2'],
    [3, 'Option 3'],
  ];
  return html`
    <div>
      <${SelectValue}
        value=${selectedValue}
        setfn=${setSelectedValue}
        options=${options}
        disabled=${false}
      />
      <p>Selected value: ${selectedValue}</p>
    </div>
  `;
};

代碼解釋:

  • useState(1):初始化 selectedValue 狀態(tài)為 1。 這意味著下拉列表的初始選中值為 1
  • setSelectedValue:是更新 selectedValue 狀態(tài)的函數(shù)。 當(dāng)下拉列表的值發(fā)生改變時(shí),SelectValue 組件會(huì)調(diào)用這個(gè)函數(shù),并將選中的值傳遞給它。
  • options:定義了下拉列表的選項(xiàng)。
  • <SelectValue ... />:渲染 SelectValue 組件,并將 value、setfnoptions 和 disabled props 傳遞給它。
  • <p>Selected value: ${selectedValue}</p>:顯示當(dāng)前選中的值。

總結(jié):

使用 SelectValue 組件的步驟如下:

  • 導(dǎo)入組件。
  • 定義狀態(tài)(可選)。
  • 定義選項(xiàng)。
  • 渲染組件,并將必要的 props 傳遞給它。

希望這個(gè)解釋能夠幫助你理解如何使用 SelectValue 組件。

到此這篇關(guān)于preact組件案例的使用的文章就介紹到這了,更多相關(guān)preact組件案例的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 教你使用javascript簡(jiǎn)單寫一個(gè)頁(yè)面模板引擎

    教你使用javascript簡(jiǎn)單寫一個(gè)頁(yè)面模板引擎

    不知道你有木有聽(tīng)說(shuō)過(guò)一個(gè)基于Javascript的Web頁(yè)面預(yù)處理器,叫做AbsurdJS。只是打算寫一個(gè)CSS的預(yù)處理器,后來(lái)擴(kuò)展到了CSS和HTML,可以用來(lái)把Javascript代碼轉(zhuǎn)成CSS和HTML代碼。當(dāng)然,由于可以生成HTML代碼,你也可以把它當(dāng)成一個(gè)模板引擎,用于在標(biāo)記語(yǔ)言中填充數(shù)據(jù)。
    2015-05-05
  • JavaScript運(yùn)行過(guò)程中的“預(yù)編譯階段”和“執(zhí)行階段”

    JavaScript運(yùn)行過(guò)程中的“預(yù)編譯階段”和“執(zhí)行階段”

    這篇文章主要介紹了JavaScript運(yùn)行過(guò)程中的“預(yù)編譯階段”和“執(zhí)行階段”的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • JavaScript調(diào)試的多個(gè)必備小Tips

    JavaScript調(diào)試的多個(gè)必備小Tips

    這篇文章主要給大家介紹了關(guān)于JavaScript調(diào)試的多個(gè)必備小Tips,文章給出了詳細(xì)的介紹與示例代碼,有需要的朋友們可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • 詳解JavaScript創(chuàng)建數(shù)組的三種方式

    詳解JavaScript創(chuàng)建數(shù)組的三種方式

    這篇文章主要介紹了JavaScript創(chuàng)建數(shù)組的三種方式:直接聲明,?以對(duì)象方式創(chuàng)建數(shù)組和使用?Array.from()?方法創(chuàng)建,并通過(guò)代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-06-06
  • JavaScript中的連續(xù)賦值問(wèn)題實(shí)例分析

    JavaScript中的連續(xù)賦值問(wèn)題實(shí)例分析

    這篇文章主要介紹了JavaScript中的連續(xù)賦值問(wèn)題,結(jié)合實(shí)例形式分析了javascript賦值語(yǔ)句以及連續(xù)賦值操作相關(guān)用法與操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • IE6與IE7中,innerHTML獲取param的區(qū)別

    IE6與IE7中,innerHTML獲取param的區(qū)別

    最近,在用一些web編輯器,發(fā)現(xiàn)插入一段mp3后,查看源代碼,object標(biāo)簽中的param都被刪除。下面我演示給大家看看。
    2009-03-03
  • js中int和string數(shù)據(jù)類型互相轉(zhuǎn)化實(shí)例

    js中int和string數(shù)據(jù)類型互相轉(zhuǎn)化實(shí)例

    在本篇文章里小編給大家分享了關(guān)于js中int和string數(shù)據(jù)類型互相轉(zhuǎn)化實(shí)例和代碼,需要的朋友們學(xué)習(xí)下。
    2019-01-01
  • Bootstrap Table 在指定列中添加下拉框控件并獲取所選值

    Bootstrap Table 在指定列中添加下拉框控件并獲取所選值

    通過(guò) bootstrap-table 的Column 配置項(xiàng)中的formatter,將獲取到的數(shù)據(jù)轉(zhuǎn)換為包含數(shù)據(jù)的 select 控件。然后根據(jù)用戶選擇項(xiàng)更新對(duì)應(yīng)單元格數(shù)據(jù),最后通過(guò)getallselection方法獲取所選行數(shù)據(jù)
    2017-07-07
  • javascript contains和compareDocumentPosition 方法來(lái)確定是否HTML節(jié)點(diǎn)間的關(guān)系

    javascript contains和compareDocumentPosition 方法來(lái)確定是否HTML節(jié)點(diǎn)間的關(guān)

    一個(gè)很棒的 blog 文章,是 PPK 兩年前寫的,文章中解釋了 contains() 和 compareDocumentPosition() 方法運(yùn)行在他們各自的瀏覽器上。
    2010-02-02
  • 詳解基于Bootstrap扁平化的后臺(tái)框架Ace

    詳解基于Bootstrap扁平化的后臺(tái)框架Ace

    Bootstrap是Twitter 于2010年開(kāi)發(fā)出來(lái)的前端框架,用過(guò)的同學(xué)應(yīng)該知道,這款前端框架不僅界面很美觀,而且兼容了很多的瀏覽器,大大加速了我們開(kāi)發(fā)網(wǎng)站的速度,本文給大家介紹基于Bootstrap扁平化的后臺(tái)框架Ace,需要的朋友參考下
    2015-11-11

最新評(píng)論