最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue和React組件之間的傳值方式詳解

 更新時間:2019年01月31日 09:32:18   作者:mdiep  
這篇文章主要介紹了Vue和React組件之間的傳值方式詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在現(xiàn)代的三大框架中,其中兩個Vue和React框架,組件間傳值方式有哪些?

組件間的傳值方式

組件的傳值場景無外乎以下幾種:

  • 父子之間
  • 兄弟之間
  • 多層級之間(孫子祖父或者更多)
  • 任意組件之間

父子之間

Vue

Vue是基于單項(xiàng)數(shù)據(jù)流設(shè)計的框架,但是提供了一些的語法,指令去實(shí)現(xiàn)一些操作

  • 父->子:通過props進(jìn)行傳遞數(shù)據(jù)給子組件
  • 子->父:通過emit向父組件傳值

同時,還有一些其他進(jìn)行父子組件通信的方式,通過$parent和$children獲取組件的父或者子組件的實(shí)例,之后通過實(shí)例對象去修改組件的屬性。在表單控件中,使用v-model實(shí)現(xiàn)了雙向數(shù)據(jù)綁定,其實(shí)這里v-model是一個語法糖,內(nèi)部實(shí)現(xiàn)還是監(jiān)聽了表單控件的change事件,然后將數(shù)據(jù)傳遞給組件修改數(shù)據(jù),從而實(shí)現(xiàn)了雙向數(shù)據(jù)綁定。

React

  • 父->子:通過props將數(shù)據(jù)傳遞給子組件
  • 子->父:通過父組件向子組件傳遞函數(shù),然后子組件中調(diào)用這些函數(shù),利用回調(diào)函數(shù)實(shí)現(xiàn)數(shù)據(jù)傳遞

兄弟之間

Vue

在Vue中,可以通過查找父組件下的子組件實(shí)例,然后進(jìn)行組件進(jìn)行通信。如this.$parent.$children,在$children中,可以通過組件的name找到要通信的組件,進(jìn)而進(jìn)行通信。

React

在React中,需要現(xiàn)將數(shù)據(jù)傳遞給父組件,然后父組件再傳遞給兄弟組件。

多層級組件

Vue

在多層級的組件中,當(dāng)然可以通過不斷的獲取$parent找到需要傳遞的祖先級組件,然后進(jìn)行通信,但是這樣繁瑣易錯,并不推薦。Vue在2.2.0 新增提供了provide/inject的方式進(jìn)行傳遞數(shù)據(jù)。即在祖先組件提供數(shù)據(jù),在需要使用的組件中,注入數(shù)據(jù),這樣就可以在子組件中使用數(shù)據(jù)了。provide/inject文檔

// 父級組件提供 'foo'
var Provider = {
 provide: {
  foo: 'bar'
 },
 // ...
}

// 子組件注入 'foo'
var Child = {
 inject: ['foo'],
 created () {
  console.log(this.foo) // => "bar"
 }
 // ...
}

React

在React中,提供了一個和Vue類似的處理多層級組件通信的方式——context,這里會提供一個生產(chǎn)者和一個消費(fèi)者,會在父組件中生產(chǎn)數(shù)據(jù),在子組件中消費(fèi)數(shù)據(jù)。從使用上來說,只需要將子組件包裹在生產(chǎn)者的Provider中,在需要用到數(shù)據(jù)的子組件中,通過Consumer包裹,就可以拿到生產(chǎn)者的數(shù)據(jù)。context文檔

// Theme context, default to light theme
const ThemeContext = React.createContext('light');

class App extends React.Component {
 render() {
  const {signedInUser, theme} = this.props;

  // App component that provides initial context values
  return (
   <ThemeContext.Provider value={theme}>
    <Layout />
   </ThemeContext.Provider>
  );
 }
}

function Layout() {
 return (
  <div>
   <Sidebar />
   <Content />
  </div>
 );
}

// A component may consume multiple contexts
function Content() {
 return (
  <ThemeContext.Consumer>
   {theme => (
     <ProfilePage theme={theme} />
   )}
  </ThemeContext.Consumer>
 );
}

任意組件之間

Vue

對于任意組件,簡單的可以使用EventBus,對于更為復(fù)雜的建議使用Vuex。

React

簡單的使用EventBus,復(fù)雜的使用Redux

總結(jié)

當(dāng)然,組件間的傳值是靈活的,可以有多種途徑,父子組件同樣可以使用EventBus,Vuex或者Redux,只是遵循框架開發(fā)者的建議,以及適應(yīng)開發(fā)的比較好的實(shí)踐而已。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue3?路由頁面切換動畫?animate.css效果

    Vue3?路由頁面切換動畫?animate.css效果

    這篇文章主要介紹了Vue3路由頁面切換動畫animate.css效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • vue+element 模態(tài)框表格形式的可編輯表單實(shí)現(xiàn)

    vue+element 模態(tài)框表格形式的可編輯表單實(shí)現(xiàn)

    這篇文章主要介紹了vue+element 模態(tài)框表格形式的可編輯表單實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 詳解Vue中watch對象內(nèi)屬性的方法

    詳解Vue中watch對象內(nèi)屬性的方法

    這篇文章主要介紹了詳解Vue中watch對象內(nèi)屬性的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 詳解vue掛載到dom上會發(fā)生什么

    詳解vue掛載到dom上會發(fā)生什么

    這篇文章主要介紹了詳解vue掛載到dom上會發(fā)生什么,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • vuex刷新頁面后如何解決丟失store的數(shù)據(jù)問題

    vuex刷新頁面后如何解決丟失store的數(shù)據(jù)問題

    這篇文章主要介紹了vuex刷新頁面后如何解決丟失store的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 談?wù)剬ue?Router的理解

    談?wù)剬ue?Router的理解

    vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁面應(yīng)用,這篇文章主要介紹了對Vue?Router的理解,需要的朋友可以參考下
    2022-11-11
  • 詳解Vue組件之間的數(shù)據(jù)通信實(shí)例

    詳解Vue組件之間的數(shù)據(jù)通信實(shí)例

    本篇文章主要介紹了詳解Vue組件之間的數(shù)據(jù)通信實(shí)例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue中數(shù)據(jù)字典dicts的簡單說明和用法介紹

    vue中數(shù)據(jù)字典dicts的簡單說明和用法介紹

    這篇文章主要給大家介紹了關(guān)于vue中數(shù)據(jù)字典dicts的簡單說明和用法的相關(guān)資料,如果您想在Vue中使用字典查詢,您可以使用Vue的計算屬性和方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Vue修改項(xiàng)目啟動端口號方法

    Vue修改項(xiàng)目啟動端口號方法

    今天小編就為大家分享一篇Vue修改項(xiàng)目啟動端口號方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue.config.js里面的devserver如何配置

    vue.config.js里面的devserver如何配置

    本文介紹了vue.config.js中devServer的常見配置方式,包括基本配置、代理配置、熱模塊替換、靜態(tài)資源服務(wù)、HTTPS配置、多代理配置以及其他配置項(xiàng),幫助開發(fā)者根據(jù)項(xiàng)目需求進(jìn)行定制
    2025-01-01

最新評論

临猗县| 蒲城县| 紫阳县| 习水县| 三门县| 新兴县| 阳原县| 盐城市| 博兴县| 竹溪县| 乡城县| 胶南市| 浮梁县| 高清| 瓦房店市| 合作市| 米泉市| 丰镇市| 辽宁省| 息烽县| 宾川县| 黑水县| 麻栗坡县| 泰安市| 章丘市| 诏安县| 桦南县| 静宁县| 香格里拉县| 措勤县| 石楼县| 洪雅县| 义乌市| 黔西| 若尔盖县| 林甸县| 留坝县| 长春市| 东台市| 唐河县| 科技|