中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

wordpress中英文網(wǎng)站什么平臺(tái)推廣效果最好

wordpress中英文網(wǎng)站,什么平臺(tái)推廣效果最好,中國(guó)創(chuàng)業(yè)網(wǎng),網(wǎng)站建設(shè)通此文章是本人在學(xué)習(xí)React的時(shí)候,寫(xiě)下的學(xué)習(xí)筆記,在此紀(jì)錄和分享。此為第九篇,主要介紹高階函數(shù)與函數(shù)柯里化。 高階函數(shù),和函數(shù)的柯里化,是學(xué)習(xí)react的拓展,方便以后優(yōu)化代碼,更好的學(xué)習(xí)react。…

? ? ? ? 此文章是本人在學(xué)習(xí)React的時(shí)候,寫(xiě)下的學(xué)習(xí)筆記,在此紀(jì)錄和分享。此為第九篇,主要介紹高階函數(shù)與函數(shù)柯里化。

高階函數(shù),和函數(shù)的柯里化,是學(xué)習(xí)react的拓展,方便以后優(yōu)化代碼,更好的學(xué)習(xí)react。

目錄

高階函數(shù)

案例

高階函數(shù)定義?

函數(shù)的柯里化

函數(shù)柯里化的定義

柯里化小案例

不用柯里化的寫(xiě)法


高階函數(shù)

案例

先把上一筆記里面的案例,拿出來(lái):這個(gè)案例就是,兩個(gè)輸入框分別是用戶(hù)名和密碼,輸入用戶(hù)名和密碼,點(diǎn)擊登錄按鈕,會(huì)彈出一個(gè)提示框,顯示你輸入的用戶(hù)名和密碼。

 <!-- 準(zhǔn)備好容器 --><div id="test1"></div><script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script><script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script><script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script><!-- 新引入的庫(kù),用于限定props傳入值的類(lèi)型,propTypes --><script src="https://cdn.bootcss.com/prop-types/15.6.1/prop-types.js"></script><script type="text/babel">class Login extends React.Component {//狀態(tài)初始化state = {username:'',//用戶(hù)名password:''//密碼}//保存用戶(hù)名到狀態(tài)中saveUsername = (event)=>{this.setState({username:event.target.value})}//保存密碼到狀態(tài)中savePassword = (event)=>{this.setState({password:event.target.value})}//表單提交的回調(diào)handleSubmit = (event) => {event.preventDefault()const {username,password} = this.statealert(`您輸入的用戶(hù)名是${username},輸入的密碼是${password}`)}render() {return (<form action="http://www.atguigu.com" onSubmit={this.handleSubmit}>用戶(hù)名:<input onChange = {this.saveUsername} type="text" name="username" />密碼:<input onChange = {this.savePassword} type="password" name="password" /><button>登錄</button></form>)}}ReactDOM.render(<Login />, document.getElementById('test1'))</script>

????????如代碼所示,表單中需要獲取用戶(hù)名和密碼,并且加以操作,所以有了對(duì)應(yīng)的兩個(gè)方法:saveUsername和savePassword。但如果還存在性別,年齡,電話(huà)號(hào)碼等等信息需要操作,是不是得一一對(duì)應(yīng),寫(xiě)很多方法?實(shí)在是過(guò)于冗余,有沒(méi)有什么解決的辦法?

????????所以我們只寫(xiě)一個(gè)方法saveFormData來(lái)代替saveUsername和savePassword,來(lái)給表單中所有的屬性使用:

 用戶(hù)名:<input onChange = {this.saveFormData("username")} type="text" name="username" />密碼:<input onChange = {this.saveFormData("password")} type="password" name="password" />
saveFormData = (event)=>{this.setState({password:event.target.value})
}

????????但是,這會(huì)出現(xiàn)很大的錯(cuò)誤。注意onchange的回調(diào)函數(shù),它非是一個(gè)函數(shù)進(jìn)行了回調(diào),而是一個(gè)函數(shù)的返回結(jié)果進(jìn)行了回調(diào):this.saveFormData("username"),saveFormData加了小括號(hào),已經(jīng)在回調(diào)時(shí)執(zhí)行完了,產(chǎn)生了函數(shù)的返回值,這個(gè)返回值參與了回調(diào),就會(huì)發(fā)生錯(cuò)誤。

? ? ? ? 必須將一個(gè)函數(shù)返回給onchange作為回調(diào)。

如下的寫(xiě)法,才是onchange事件觸發(fā)時(shí)候,回調(diào)saveFormData這個(gè)函數(shù)。

<input onChange = {this.saveFormData} 

? ? ? ? 而且這個(gè)saveFromData函數(shù),this.setState也會(huì)一直把數(shù)據(jù)給password。我們接下來(lái)修改這些錯(cuò)誤。

? ? ? ? 那么怎么才能在加()的情況下,也能正確執(zhí)行回調(diào)函數(shù)呢。眾所周知函數(shù)加了()就是執(zhí)行函數(shù)產(chǎn)生返回值,那么我們直接讓返回值是一個(gè)函數(shù)不就行了。

改寫(xiě)這個(gè)saveFromData函數(shù):

//保存表單數(shù)據(jù)到狀態(tài)中
saveFormData = (dataType) => {return (event) => {this.setState({[dataType]: event.target.value})}
}

????????我們將saveFromData函數(shù)的返回值,寫(xiě)成了一個(gè)函數(shù)。如此一來(lái),onchange事件觸發(fā)后,回調(diào)saveFromData函數(shù)的返回值,仍然是一個(gè)函數(shù),便能達(dá)到正常的效果。

????????我們?cè)趏nChange={this.saveFormData("username")}中傳入?yún)?shù),在saveFromData函數(shù)設(shè)置形參dataType接收這個(gè)參數(shù),在this.setState中以中括號(hào)包裹形參(中括號(hào)表示其中是是一個(gè)變量,不寫(xiě)中括號(hào)會(huì)當(dāng)作一個(gè)鍵名),設(shè)置state,這樣就可以區(qū)分?jǐn)?shù)據(jù),在state中分開(kāi)保存不同的數(shù)據(jù)。

來(lái)看效果:

高階函數(shù)定義?

高階函數(shù):如果一個(gè)函數(shù)符合下面兩個(gè)規(guī)范中的任何一個(gè),那該函數(shù)就是高階函數(shù)。

? ? ? ? 1.若A函數(shù),接收的參數(shù)是一個(gè)函數(shù),那么A就可以被稱(chēng)為高階函數(shù)。

? ? ? ? 2.若A函數(shù),調(diào)用的返回值依然是一個(gè)函數(shù),那么A就可以被稱(chēng)為高階函數(shù)。

由此可見(jiàn):saveFromData函數(shù)就是一個(gè)高階函數(shù),調(diào)用的返回值是一個(gè)函數(shù)。

常見(jiàn)的高階函數(shù),如promise,數(shù)組迭代的那幾種方法,定時(shí)器。

函數(shù)的柯里化

函數(shù)柯里化的定義

函數(shù)的柯里化:通過(guò)函數(shù)調(diào)用繼續(xù)返回函數(shù)的方式,實(shí)現(xiàn)多次接收參數(shù)最后統(tǒng)一處理的函數(shù)編碼形式。

柯里化小案例

為了理解柯里化,我們先正常的寫(xiě)一個(gè)普通函數(shù)的案例:a,b,c 的求和

function sum(a,b,c){return a+b+c}const result = sum(1,2,3)console.log(result);

現(xiàn)在把上面的案例,改成柯里化的寫(xiě)法:

 function sum(a) {return (b) => {return (c) => {return a + b + c}}}const result = sum(1)(2)(3)console.log(result);

這個(gè)案例里面的函數(shù)柯里化,看似把簡(jiǎn)單的問(wèn)題復(fù)雜化,變得麻煩,又有些回調(diào)地獄的風(fēng)格。但實(shí)際應(yīng)用上,函數(shù)柯里化經(jīng)常使用。比如說(shuō)第一個(gè)案例,里面的saveFromData函數(shù):

saveFormData = (dataType) => {return (event) => {this.setState({[dataType]: event.target.value})}}

先接收了參數(shù)dataType,然后再接收了event參數(shù),在后面對(duì)兩個(gè)參數(shù)統(tǒng)一處理了,這就是函數(shù)的柯里化。

不用柯里化的寫(xiě)法

????????如果我們不用柯里化的寫(xiě)法,這就要求我們一次性拿到所有參數(shù)。主要是在onchange事件里,想辦法把兩個(gè)參數(shù)一次性給saveFromData函數(shù)傳過(guò)去。

? ? ? ? 給onchange事件回調(diào)的,必須是一個(gè)函數(shù)。我們嘗試寫(xiě)一個(gè)內(nèi)聯(lián)函數(shù),這樣既能在內(nèi)聯(lián)函數(shù)中把參數(shù)傳遞給saveFromData函數(shù),又可以保證是一個(gè)函數(shù)回調(diào)給事件。

如下:onChange={(event)=>{this.saveFormData('username',event.target.value)}}

用戶(hù)名:<input onChange={(event)=>{this.saveFormData('username',event)}} type="text" name="username" />
密碼:<input onChange={(event)=>{this.saveFormData('password',event)}} type="password" name="password" />

然后我們就可以把saveFromData函數(shù)改寫(xiě)成一個(gè)普通的函數(shù):

saveFormData = (dataType, event) => {this.setState({[dataType]: event.target.value})}

如此,我們改寫(xiě)了這兩個(gè)部分,就可以把柯里化寫(xiě)法,改成普通的函數(shù)寫(xiě)法。

http://www.risenshineclean.com/news/23104.html

相關(guān)文章:

  • 手機(jī)兼職的正規(guī)平臺(tái)有哪些如何優(yōu)化網(wǎng)站排名
  • 俄語(yǔ)網(wǎng)站建設(shè)學(xué)電商哪個(gè)培訓(xùn)學(xué)校好
  • 如何創(chuàng)立個(gè)人網(wǎng)站網(wǎng)站收錄怎么弄
  • 企業(yè)網(wǎng)站 wordpress網(wǎng)頁(yè)代碼模板
  • ps模板下載網(wǎng)站新網(wǎng)站秒收錄技術(shù)
  • 網(wǎng)站建設(shè)的主要職責(zé)免費(fèi)網(wǎng)站免費(fèi)
  • 建網(wǎng)站wordpress女生學(xué)網(wǎng)絡(luò)營(yíng)銷(xiāo)這個(gè)專(zhuān)業(yè)好嗎
  • 國(guó)家攝影網(wǎng)站百度發(fā)布信息怎么弄
  • 讓別人做網(wǎng)站需要提供什么長(zhǎng)沙網(wǎng)絡(luò)公關(guān)公司
  • 營(yíng)銷(xiāo)型網(wǎng)站有哪些特點(diǎn)外貿(mào)網(wǎng)站建設(shè) google
  • 網(wǎng)站做數(shù)據(jù)監(jiān)測(cè)寧波網(wǎng)站推廣排名
  • 校園網(wǎng)站設(shè)計(jì)外貿(mào)接單十大網(wǎng)站
  • 嗶哩網(wǎng)站開(kāi)發(fā)需求分析模板網(wǎng)上推廣
  • 創(chuàng)業(yè)做招聘網(wǎng)站靠譜嗎seo研究協(xié)會(huì)網(wǎng)app
  • 網(wǎng)上招聘網(wǎng)站開(kāi)發(fā)報(bào)告中國(guó)企業(yè)網(wǎng)
  • 幫忙做公司網(wǎng)站seo專(zhuān)員簡(jiǎn)歷
  • 仿新浪微博網(wǎng)站代碼推廣資源網(wǎng)
  • 怎么做祝福網(wǎng)站新手怎么做網(wǎng)絡(luò)推廣
  • PHP做網(wǎng)站案例教程軟文代寫(xiě)文案
  • 賀州網(wǎng)站建設(shè)品牌推廣活動(dòng)方案
  • 做外國(guó)網(wǎng)用哪些網(wǎng)站小廣告網(wǎng)頁(yè)
  • dede 企業(yè)網(wǎng)站模板下載如何優(yōu)化
  • 如何ps做網(wǎng)站首頁(yè)寧波seo優(yōu)化項(xiàng)目
  • ios網(wǎng)站開(kāi)發(fā)工具有哪些怎么做網(wǎng)址
  • 做網(wǎng)站有哪些注意事項(xiàng)百度關(guān)鍵詞在線(xiàn)優(yōu)化
  • dw做網(wǎng)站怎么用到j(luò)ava友情鏈接網(wǎng)站
  • 鄭州餐飲 網(wǎng)站建設(shè)小視頻關(guān)鍵詞匯總
  • 東莞桂城網(wǎng)站建設(shè)外貿(mào)網(wǎng)站推廣服務(wù)
  • 網(wǎng)站建設(shè)成都時(shí)事新聞熱點(diǎn)
  • 開(kāi)發(fā)網(wǎng)站公司收入瀏覽器廣告投放