自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

適合Vue用戶的React教程,你值得擁有

開發(fā)
小編日常工作中使用的是Vue,對于React只是做過簡單的了解,并沒有做過深入學(xué)習(xí)。趁著這個雙節(jié)假期,小編決定好好學(xué)一學(xué)React,今天這篇文章就是小編在學(xué)習(xí)React之后,將React與Vue的用法做的一個對比,通過這個對比,方便使用Vue的小伙伴可以快速將Vue中的寫法轉(zhuǎn)換為React的寫法。

                   [[345170]]

 插槽,在React中沒找到??
在使用Vue的時候,插槽是一個特別常用的功能,通過定義插槽,可以在調(diào)用組件的時候?qū)⑼獠康膬?nèi)容傳入到組件內(nèi)部,顯示到指定的位置。在Vue中,插槽分為默認(rèn)插槽,具名插槽和作用域插槽。其實(shí)不僅僅Vue,在React中其實(shí)也有類似插槽的功能,只是名字不叫做插槽,下面我將通過舉例來說明。

默認(rèn)插槽
現(xiàn)在項(xiàng)目需要開發(fā)一個卡片組件,如下圖所示,卡片可以指定標(biāo)題,然后卡片內(nèi)容可以用戶自定義,這時候?qū)τ诳ㄆ瑑?nèi)容來說,就可以使用插槽來實(shí)現(xiàn),下面我們就分別使用Vue和React來實(shí)現(xiàn)這個功能

Vue實(shí)現(xiàn)

1.首先實(shí)現(xiàn)一個card組件,如下代碼所示

  1. <template> 
  2.   <div class="card"
  3.     <div class="card__title"
  4.       <span>{{ title }}</span> 
  5.     </div> 
  6.     <div class="card__body"
  7.       <slot></slot> 
  8.     </div> 
  9.   </div> 
  10. </template> 
  11. <script> 
  12. export default { 
  13.   props: { 
  14.     title: { 
  15.       type: String, 
  16.       default'' 
  17.     } 
  18.   } 
  19. </script> 

可以看到上面我們使用了<slot></slot>,這個就是組件的默認(rèn)插槽,在使用組件的時候,傳入的內(nèi)容將會被放到<slot></slot>所在位置

2.在外部使用定義的card組件

  1. <template> 
  2.   <div> 
  3.     <my-card> 
  4.       <div>我將被放在card組件的默認(rèn)插槽里面</div> 
  5.     </my-card> 
  6.   </div> 
  7. </template> 
  8. <script> 
  9. import MyCard from '../components/card' 
  10. export default { 
  11.   components: { 
  12.     MyCard 
  13.   } 
  14. </script> 

如上代碼,就可以使用組件的默認(rèn)插槽將外部的內(nèi)容應(yīng)用到組件里面指定的位置了。

React實(shí)現(xiàn)
雖然在React里面沒有插槽的概念,但是React里面也可以通過props.children拿到組件標(biāo)簽內(nèi)部的子元素的,就像上面代碼<my-card>標(biāo)簽內(nèi)的子元素,通過這個我們也可以實(shí)現(xiàn)類似Vue默認(rèn)插槽的功能,一起看看代碼。

1.使用React定義Card組件

  1. import React from 'react' 
  2.  
  3. export interface CardProps { 
  4.   title: string, 
  5.   children: React.ReactNode 
  6.  
  7. export default function(props: CardProps) { 
  8.  
  9.   return ( 
  10.     <div className="card"
  11.       <div className="card__title"
  12.         <span>{props.title}</span> 
  13.       </div> 
  14.       <div className="card__body"
  15.         {/**每個組件都可以獲取到 props.children。它包含組件的開始標(biāo)簽和結(jié)束標(biāo)簽之間的內(nèi)容 */} 
  16.         {props.children} 
  17.       </div> 
  18.     </div> 
  19.   ); 

  1. import React from 'react' 
  2. import Card from './components/Card' 
  3.  
  4. export default function () { 
  5.  
  6.   return ( 
  7.     <div> 
  8.       <Card title="標(biāo)題"
  9.         <div>我將被放在card組件的body區(qū)域內(nèi)容</div> 
  10.       </Card> 
  11.     </div> 
  12.   ); 

b.在外部使用Card組件
具名插槽
繼續(xù)以上面的Card組件為例,假如我們現(xiàn)在需求發(fā)生了變化,組件的title也可以使用插槽,這時候?qū)τ赩ue就可以使用具名插槽了,而React也是有辦法實(shí)現(xiàn)的哦。

Vue實(shí)現(xiàn)
Vue的具名插槽主要解決的是一個組件需要多個插槽的場景,其實(shí)現(xiàn)是為<slot>添加name屬性來實(shí)現(xiàn)了。

1.我們就上面的需求對card組件進(jìn)行修改

  1. <template> 
  2.   <div class="card"
  3.     <div class="card__title"
  4.       <!--如果傳入了title,則使用title屬性,否則是否具名插槽--> 
  5.       <span v-if="title">{{ title }}</span> 
  6.       <slot v-else name="title"></slot> 
  7.     </div> 
  8.     <div class="card__body"
  9.       <!--對于內(nèi)容區(qū)域依然使用默認(rèn)插槽--> 
  10.       <slot></slot> 
  11.     </div> 
  12.   </div> 
  13. </template> 
  14. <script> 
  15. export default { 
  16.   props: { 
  17.     title: { 
  18.       type: String, 
  19.       default'' 
  20.     } 
  21.   } 
  22. </script> 

2.card組件修改完之后,我們再去調(diào)整一下使用card組件的地方

  1. <template> 
  2.   <div> 
  3.     <my-card> 
  4.       <!--通過v-slot:title 使用具名插槽--> 
  5.       <template v-slot:title> 
  6.         <span>這里是標(biāo)題</span> 
  7.       </template> 
  8.       <div>我將被放在card組件的默認(rèn)插槽里面</div> 
  9.     </my-card> 
  10.   </div> 
  11. </template> 
  12. <script> 
  13. import MyCard from '../components/card' 
  14. export default { 
  15.   components: { 
  16.     MyCard 
  17.   } 
  18. </script> 

React實(shí)現(xiàn)
React連插槽都沒有, 更別提具名插槽了,但是沒有不代表不能模擬出來。對于React的props,我們不僅僅可以傳入普通的屬性,還可以傳入一個函數(shù),這時候我們就可以在傳入的這個函數(shù)里面返回JSX,從而就實(shí)現(xiàn)了具名插槽的功能。

1.對原有的Card組件進(jìn)行修改

  1. import React from 'react' 
  2.  
  3. export interface CardProps { 
  4.   title?: string, 
  5.   // 加入了一個renderTitle屬性,屬性類型是Function 
  6.   renderTitle?: Function
  7.   children: React.ReactNode 
  8.  
  9. export default function(props: CardProps) { 
  10.  
  11.   const {title, renderTitle} = props 
  12.   // 如果指定了renderTtile,則使用renderTitle,否則使用默認(rèn)的title 
  13.   let titleEl = renderTitle ? renderTitle() : <span>{title}</span> 
  14.  
  15.   return ( 
  16.     <div className="card"
  17.       <div className="card__title">{titleEl}</div> 
  18.       <div className="card__body"
  19.         {/**每個組件都可以獲取到 props.children。它包含組件的開始標(biāo)簽和結(jié)束標(biāo)簽之間的內(nèi)容 */} 
  20.         {props.children} 
  21.       </div> 
  22.     </div> 
  23.   ); 

2.這時候就可以在外部自定義title了

  1. import React from 'react' 
  2. import Card from './components/Card' 
  3.  
  4. export default function () { 
  5.   return ( 
  6.     <div> 
  7.       <Card  renderTitle={ 
  8.         () => { 
  9.           return <span>我是自定義的標(biāo)題</span> 
  10.         } 
  11.       }> 
  12.         <div>我將被放在card組件的body區(qū)域內(nèi)容</div> 
  13.       </Card> 
  14.     </div> 
  15.   ); 

作用域插槽
有時讓插槽內(nèi)容能夠訪問子組件中才有的數(shù)據(jù)是很有用的,這個就是Vue提供作用域插槽的原因。我們繼續(xù)使用上面的Card組件為例,現(xiàn)在我基于上面的卡片組件開發(fā)了一個人員信息卡片組件,用戶直接使用人員信息卡片組件就可以將人員信息顯示到界面中,但是在某些業(yè)務(wù)模塊需要自定義人員信息顯示方式,這時候我們就需要使用到作用域插槽了。

Vue實(shí)現(xiàn)
實(shí)現(xiàn)用戶信息卡片組件,里面使用了作用域插槽

  1. <template> 
  2.   <custom-card title="人員信息卡片"
  3.     <div class="content"
  4.       <!--這里使用了作用域插槽,將userInfo傳出去了--> 
  5.       <slot name="userInfo" :userInfo="userInfo"
  6.         <!--如果沒有使用插槽,則顯示默認(rèn)內(nèi)容--> 
  7.         <span>姓名: {{ userInfo.name }}</span> 
  8.         <span>性別: {{ userInfo.sex }}</span> 
  9.         <span>年齡: {{ userInfo.age }}</span> 
  10.       </slot> 
  11.     </div> 
  12.   </custom-card> 
  13. </template> 
  14. <script> 
  15. import CustomCard from '../card' 
  16. export default { 
  17.   components: { 
  18.     CustomCard 
  19.   }, 
  20.   data() { 
  21.     return { 
  22.       userInfo: { 
  23.         name'張三'
  24.         sex: '男'
  25.         age: 25 
  26.       } 
  27.     } 
  28.   } 
  29. </script> 

2.在外部使用人員信息組件

  1. <template> 
  2.   <div> 
  3.     <user-card> 
  4.       <template v-slot:userInfo="{ userInfo }"
  5.         <div class="custom-user"
  6.           <ul> 
  7.             <li>姓名: {{ userInfo.name }}</li> 
  8.             <li>年齡: {{ userInfo.age }}</li> 
  9.           </ul> 
  10.         </div> 
  11.       </template> 
  12.     </user-card> 
  13.   </div> 
  14. </template> 
  15. <script> 
  16. import UserCard from '../components/user-card' 
  17. export default { 
  18.   components: { 
  19.     UserCard 
  20.   } 
  21. </script> 

React實(shí)現(xiàn)
在具名插槽那一小節(jié)我們通過給組件傳入了一個函數(shù),然后在函數(shù)中返回JSX的方式來模擬了具名插槽,那么對于作用域插槽,我們依然可以使用函數(shù)的這種方式,而作用域插槽傳遞的參數(shù)我們可以使用給函數(shù)傳參的方式來替代

1.實(shí)現(xiàn)人員信息卡片組件

  1. import React, { useState } from 'react' 
  2.  
  3. import Card from './Card' 
  4.  
  5. interface UserCardProps { 
  6.   renderUserInfo?: Function 
  7.  
  8. export interface UserInfo { 
  9.   name: string; 
  10.   age: number; 
  11.   sex: string; 
  12.  
  13. export default function(props: UserCardProps) { 
  14.   const [userInfo] = useState<UserInfo>({ 
  15.     name"張三"
  16.     age: 25, 
  17.     sex: "男"
  18.   }); 
  19.  
  20.   const content = props.renderUserInfo ? ( 
  21.     props.renderUserInfo(userInfo) 
  22.   ) : ( 
  23.     <div> 
  24.       <span>姓名: {userInfo.name}</span> 
  25.       <span>年齡: {userInfo.age}</span> 
  26.       <span>性別: {userInfo.sex}</span> 
  27.     </div> 
  28.   ); 
  29.  
  30.   return <Card title="人員信息"
  31.     {content} 
  32.   </Card> 

2.在外部使用人員信息卡片組件

  1. import React from 'react' 
  2. import UserCard, { UserInfo } from "./components/UserCard"
  3.  
  4. export default function () { 
  5.  
  6.   return ( 
  7.     <div> 
  8.       <UserCard 
  9.         renderUserInfo={(userInfo: UserInfo) => { 
  10.           return ( 
  11.             <ul> 
  12.               <li>姓名: {userInfo.name}</li> 
  13.             </ul> 
  14.           ); 
  15.         }} 
  16.       ></UserCard> 
  17.     </div> 
  18.   ); 

Context, React中的provide/inject
通常我們在項(xiàng)目開發(fā)中,對于多組件之間的狀態(tài)管理,在Vue中會使用到Vuex,在React中會使用到redux或者M(jìn)obx,但對于小項(xiàng)目來說,使用這些狀態(tài)管理庫就顯得比較大材小用了,那么在不使用這些庫的情況下,如何去完成數(shù)據(jù)管理呢?比如面試最常問的祖孫組件通信。在Vue中我們可以使用provide/inject,在React中我們可以使用Context。

假設(shè)有這樣一個場景,系統(tǒng)現(xiàn)在需要提供一個換膚功能,用戶可以切換皮膚,現(xiàn)在我們分別使用Vue和React來實(shí)現(xiàn)這個功能。

Vue中的provide/inject
在Vue中我們可以使用provide/inject來實(shí)現(xiàn)跨多級組件進(jìn)行傳值,就以上面所說場景為例,我們使用provide/inject來實(shí)現(xiàn)以下

首先,修改App.vue內(nèi)容為以下內(nèi)容

  1. <template> 
  2.   <div id="app"
  3.     <router-view /> 
  4.   </div> 
  5. </template> 
  6.  
  7. <script> 
  8. export default { 
  9.   data() { 
  10.     return { 
  11.       themeInfo: { 
  12.         theme: 'dark' 
  13.       } 
  14.     } 
  15.   }, 
  16.   provide() { 
  17.     return { 
  18.       theme: this.themeInfo 
  19.     } 
  20.   } 
  21. </script> 

然后在任意層級的子組件中像下面這樣使用

  1. <template> 
  2.   <div :class="`child-${theme.theme}`"
  3.   </div> 
  4. </template> 
  5. <script> 
  6. export default { 
  7.   inject: ['theme'
  8. </script> 

這樣就可以實(shí)現(xiàn)theme在所有子組件中進(jìn)行共享了

React中的Context
在Vue中我們使用provide/inject實(shí)現(xiàn)了組件跨層級傳值功能,在React中也提供了類似的功能即Context,下面我們使用Context來實(shí)現(xiàn)相同的功能。

在項(xiàng)目src目錄下新建context目錄,添加MyContext.js文件,然后添加以下內(nèi)容

  1. import {createContext} from 'react' 
  2. // 定義 MyContext,指定默認(rèn)的主題為`light` 
  3. export const MyContext = createContext({ 
  4.   theme: 'light' 
  5. }) 

MyContext提供了一個Provider,通過Provider可以將theme共享到所有的子組件。現(xiàn)在我們在所有的組件的共同父組件比如App.js上面添加MyContext.Provider將theme共享出去

  1. import { MyContext } from '@/context/MyContext'
  2.  
  3. export default function() { 
  4.    
  5.   const [theme, setTheme] = useState('dark'
  6.    
  7.   return ( 
  8.     <MyContext.Provider 
  9.         value={{ 
  10.           theme 
  11.         }} 
  12.       > 
  13.         <Children></Children> 
  14.      </MyContext.Provider> 
  15.     ) 
  16.   } 

然后這時候就可以直接在所有的子組件里面使用定義的主題theme了

  1. import React, { useContext } from 'react' 
  2. import { MyContext } from '@/context/MyContext'
  3.  
  4. export default function() { 
  5.    const {theme}  = useContext(MyContext) 
  6.    return <div className={`child-${theme}`}> 

沒有了v-model,但也不影響使用
我們知道React和Vue都是單向數(shù)據(jù)流的,即數(shù)據(jù)的流向都是由外層向內(nèi)層組件進(jìn)行傳遞和更新的,比如下面這段React代碼就是標(biāo)準(zhǔn)的單向數(shù)據(jù)流.

  1. import React, { useState } from "react"
  2.  
  3. export default function(){ 
  4.   const [name] = useState('子君'
  5.   return <input value={name}></input> 

在vue中使用v-model
如上代碼,我們在通過通過value屬性將外部的值傳遞給了input組件,這個就是一個簡單的單向數(shù)據(jù)流。但是在使用Vue的時候,還有兩個比較特殊的語法糖v-model和.sync,這兩個語法糖可以讓Vue組件擁有雙向數(shù)據(jù)綁定的能力,比如下面的代碼

  1. <template> 
  2.    <input v-model="name"/> 
  3. </template> 
  4. <script> 
  5.   export default { 
  6.     data() { 
  7.       return { 
  8.         name:'子君' 
  9.       } 
  10.     } 
  11.   } 
  12. </script> 

通過v-model,當(dāng)用戶修改input的值的時候,外部的name的值也將同步被修改。但這是Vue的語法糖啊,React是不支持的,所以React應(yīng)該怎么辦呢?這時候再想想自定義v-model,v-model實(shí)際上是通過定義value屬性同時監(jiān)聽input事件來實(shí)現(xiàn)的,比如這樣:

  1. <template> 
  2.   <div class="custom-input"
  3.      <input :value="value" @input="$_handleChange"/> 
  4.   </div> 
  5. </template> 
  6. <script> 
  7.   export default { 
  8.     props:{ 
  9.       value:{ 
  10.         type: String, 
  11.         default'' 
  12.       } 
  13.     }, 
  14.     methods:{ 
  15.       $_handleChange(e) { 
  16.         this.$emit('input', e.target.value) 
  17.       } 
  18.     } 
  19.   } 
  20. </script> 

在react尋找v-model替代方案
同理,React雖然沒有v-model語法糖,但是也可以通過傳入屬性然后監(jiān)聽事件來實(shí)現(xiàn)數(shù)據(jù)的雙向綁定。

  1. import React, { useState } from 'react' 
  2.  
  3. export default function() { 
  4.   const [name, setName] = useState('子君'
  5.  
  6.   const handleChange = (e) => { 
  7.     setName(e.target.value) 
  8.   } 
  9.   return <div> 
  10.     <input value={name} onChange={handleChange}></input> 
  11.   </div> 

小編剛開始使用react,感覺沒有v-model就顯得比較麻煩,不過麻煩歸麻煩,代碼改寫也要寫。就像上文代碼一樣,每一個表單元素都需要監(jiān)聽onChange事件,越發(fā)顯得麻煩了,這時候就可以考慮將多個onChange事件合并成一個,比如像下面代碼這樣

  1. import React, { useState } from 'react' 
  2.  
  3. export default function () { 
  4.   const [name, setName] = useState('子君'
  5.   const [sex, setSex] = useState('男'
  6.  
  7.   const handleChange = (e:any, method: Function) => { 
  8.     method(e.target.value) 
  9.   } 
  10.   return <div> 
  11.     <input value={name} onChange={(e) => handleChange(e, setName)}></input> 
  12.     <input value={sex} onChange={(e) => handleChange(e, setSex)}></input> 
  13.   </div> 

沒有了指令,我感覺好迷茫
在Vue中我們一般繪制頁面都會使用到template,template里面提供了大量的指令幫助我們完成業(yè)務(wù)開發(fā),但是在React中使用的是JSX,并沒有指令,那么我們應(yīng)該怎么做呢?下面我們就將Vue中最常用的一些指令轉(zhuǎn)換為JSX里面的語法(注意: 在Vue中也可以使用JSX)

v-show與v-if
在Vue中我們隱藏顯示元素可以使用v-show或者v-if,當(dāng)然這兩者的使用場景是有所不同的,v-show是通過設(shè)置元素的display樣式來顯示隱藏元素的,而v-if隱藏元素是直接將元素從dom中移除掉。

1.看一下Vue中的v-show與v-if的用法

  1. <template> 
  2.   <div> 
  3.     <span v-show="showName">姓名:{{ name }}</span> 
  4.     <span v-if="showDept">{{ dept }}</span> 
  5.   </div> 
  6. </template> 
  7. <script> 
  8. export default { 
  9.   data() { 
  10.     return { 
  11.       name'子君'
  12.       dept: '銀河帝國'
  13.       showName: false
  14.       showDept: true 
  15.     } 
  16.   } 
  17. </script> 

2.將v-show,v-if轉(zhuǎn)換為JSX中的語法

在Vue中指令是為了在template方便動態(tài)操作數(shù)據(jù)而存在的,但是到了React中我們寫的是JSX,可以直接使用JS,所以指令是不需要存在的,那么上面的v-show,v-if如何在JSX中替代呢

  1. import React, { useState } from 'react' 
  2.  
  3. export default function() { 
  4.   const [showName] = useState(false
  5.  
  6.   const [showDept] = useState(true
  7.  
  8.   const [userInfo] = useState({ 
  9.     name:'子君'
  10.     dept: '銀河帝國' 
  11.   }) 
  12.  
  13.   return ( 
  14.     <div> 
  15.       {/**模擬 v-show */} 
  16.       <span style={{display: showName ? 'block' : 'none'}}>{userInfo.name}</span> 
  17.       {/**模擬 v-show */} 
  18.       {showDept ? <span>{userInfo.dept}</span>: undefined} 
  19.     </div> 
  20.   ) 

v-for
v-for在Vue中是用來遍歷數(shù)據(jù)的,同時我們在使用v-for的時候需要給元素指定key,key的值一般是數(shù)據(jù)的id或者其他唯一且固定的值。不僅在Vue中,在React中也是存在key的,兩者的key存在的意義基本一致,都是為了優(yōu)化虛擬DOM diff算法而存在的。

1.在Vue中使用v-for

  1. <template> 
  2.   <div> 
  3.     <ul> 
  4.       <li v-for="item in list" :key="item.id"
  5.         {{ item.name }} 
  6.       </li> 
  7.     </ul> 
  8.   </div> 
  9. </template> 
  10. <script> 
  11. export default { 
  12.   data() { 
  13.     return { 
  14.       list: [ 
  15.         { 
  16.           id: 1, 
  17.           name'子君' 
  18.         }, 
  19.         { 
  20.           id: '2'
  21.           name'張三' 
  22.         }, 
  23.         { 
  24.           id: '3'
  25.           name'李四' 
  26.         } 
  27.       ] 
  28.     } 
  29.   } 
  30. </script> 

2.在React中使用v-for的替代語法

在react中雖然沒有v-for,但是JSX中可以直接使用JS,所以我們可以直接遍歷數(shù)組

  1. import React from 'react' 
  2.  
  3. export default function() { 
  4.   const data = [ 
  5.     { 
  6.       id: 1, 
  7.       name"子君"
  8.     }, 
  9.     { 
  10.       id: "2"
  11.       name"張三"
  12.     }, 
  13.     { 
  14.       id: "3"
  15.       name"李四"
  16.     }, 
  17.   ]; 
  18.  
  19.   return ( 
  20.     <div> 
  21.       <ul> 
  22.         { 
  23.         data.map(item => { 
  24.           return <li key={item.id}>{item.name}</li> 
  25.         }) 
  26.       } 
  27.       </ul> 
  28.     </div> 
  29.   ) 

v-bind與v-on
v-bind在Vue中是動態(tài)綁定屬性的,v-on是用于監(jiān)聽事件的,因?yàn)镽eact也有屬性和事件的概念,所以我們在React也能發(fā)現(xiàn)可替代的方式。

1.在Vue中使用v-bind與v-on

  1. <template> 
  2.   <div> 
  3.     <!--:value是v-bind:value的簡寫, @input是v-on:input的簡寫--> 
  4.     <input :value="value" @input="handleInput" /> 
  5.   </div> 
  6. </template> 
  7. <script> 
  8. export default { 
  9.   data() { 
  10.     return { 
  11.       value: '子君' 
  12.     } 
  13.   }, 
  14.   methods: { 
  15.     handleInput(e) { 
  16.       this.value = e.target.value 
  17.     } 
  18.   } 
  19. </script> 

2.在React中尋找替代方案

在Vue中,作者將事件和屬性進(jìn)行了分離,但是在React中,其實(shí)事件也是屬性,所以在本小節(jié)我們不僅看一下如何使用屬性和事件,再了解一下如何在React中自定義事件

開發(fā)一個CustomInput組件

  1. import React from 'react' 
  2.  
  3. export interface CustomInputProps { 
  4.   value: string; 
  5.   //可以看出 onChange是一個普通的函數(shù),也被定義到了組件的props里面了 
  6.   onChange: ((value: string,event: React.ChangeEvent<HTMLInputElement>) => void) | undefined; 
  7.  
  8. export default function(props: CustomInputProps) { 
  9.    
  10.   function handleChange(e: React.ChangeEvent<HTMLInputElement>) { 
  11.     // props.onChange是一個屬性,也是自定義的一個事件 
  12.     props.onChange && props.onChange(e.target.value, e) 
  13.   } 
  14.  
  15.   return ( 
  16.     <input value={props.value} onChange={handleChange}></input> 
  17.   ) 

使用CustomInput組件

  1. import React, { useState } from 'react' 
  2.  
  3. import CustomInput from './components/CustomInput' 
  4.  
  5. export default function() { 
  6.  const [value, setValue] =  useState(''
  7.  
  8.  function handleChange(value: string) { 
  9.    setValue(value) 
  10.  } 
  11.  
  12.   return ( 
  13.     <div> 
  14.       <CustomInput value={value} onChange={handleChange}></CustomInput> 
  15.     </div> 
  16.   ) 

總結(jié)
剛開始從Vue轉(zhuǎn)到React的時候,其實(shí)是有點(diǎn)不適應(yīng)的,但是當(dāng)慢慢的習(xí)慣之后,就會發(fā)現(xiàn)Vue和React是存在很多共性的,可以參考的去學(xué)習(xí)。當(dāng)然無論Vue還是React,上手比較快,但是想深入學(xué)習(xí)還是需要下功夫的,后續(xù)小編將會對Vue和React的用法在做更深入的介紹,敬請期待。

 

責(zé)任編輯:姜華 來源: 前端有的玩
相關(guān)推薦

2021-09-06 10:22:47

匿名對象編程

2023-12-29 08:17:26

Python代碼分析Profile

2020-04-07 10:05:34

React開發(fā)工具

2021-03-18 07:52:42

代碼性能技巧開發(fā)

2024-06-13 09:50:45

2021-01-21 09:45:16

Python字符串代碼

2020-09-01 07:41:56

macOS工具

2024-12-18 16:53:13

ncduLinux磁盤分析

2020-03-01 14:57:47

Python編程函數(shù)

2020-12-14 13:32:40

Python進(jìn)度條參數(shù)

2021-07-05 09:40:57

工具Node開源

2020-03-08 13:24:47

JavaScript開發(fā)

2020-06-15 14:43:16

Python開發(fā)工具

2014-12-19 10:55:17

Linux性能監(jiān)控

2024-01-04 08:33:11

異步JDK數(shù)據(jù)結(jié)構(gòu)

2013-07-05 16:08:40

開發(fā)效率

2020-02-03 12:25:35

Python工具服務(wù)器

2022-01-18 16:42:03

區(qū)塊鏈加密信息資源

2013-08-07 09:16:10

云存儲云備份云解決方案

2012-03-01 09:15:41

HTML 5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號