1. 程式人生 > >RN中子元件和父元件之間的資料傳遞問題

RN中子元件和父元件之間的資料傳遞問題

使用RN做專案已經有兩個月了,雖然現在大部分情況下已經使用了Redux,進行狀態的管理和資料的處理,後續會說一下自己是如何使用Redux的,現在先說一下在RN中一個關鍵的資料傳遞問題,雖然後續可能專案中添加了Redux架構,但也不代表這每個頁面都去使用,畢竟為了一個簡單的資料,需要一堆操作,也挺麻煩的。

1 父元件傳遞給子元件資料

這個是比較簡單,也是比較常見的。
比如:官網上props這一節中的這個例子

import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native'
; class Greeting extends Component { render() { return ( <Text>Hello {this.props.name}!</Text> ); } } class LotsOfGreetings extends Component { render() { return ( <View style={{alignItems: 'center'}}> <Greeting name='Rexxar' /> <Greeting name='Jaina'
/> <Greeting name='Valeera' /> </View> ); } } AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings);

我們發現類Greeting 是子元件,它在使用父元件LotsOfGreetings 裡面的資料的時候,會填寫屬性name=’XXX’,父元件中這樣寫,子元件就可以利用this.props.name去使用這個資料,所以以後在想從父元件向子元件傳遞資料的時候,就可以利用這種方式。

2 子元件向父元件傳遞資料

這種是大家遇到比較多,且會迷茫的地方,其實原理差不多,也很簡單。
還拿上面的情況來說,我稍加改造一下:

import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';

class Greeting extends Component {
_onPressButton(){
this.props.callback("hello wrold");
}
  render() {
    return (
    <TouchableHighlight onPress={this._onPressButton.bind(this)}>
      <Text>Hello {this.props.name}!</Text>
      </TouchableHighlight >
    );
  }
}

class LotsOfGreetings extends Component {
_onPressButton(str){
str....
}
  render() {
    return (
      <View style={{alignItems: 'center'}} callback={this._onPressButton.bind(this)}>
        <Greeting name='Rexxar' />
        <Greeting name='Jaina' />
        <Greeting name='Valeera' />
      </View>
    );
  }
}

AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings);

上面是直接props傳遞了資料,這次我利用props傳遞方法,然後使用方法來回調資料,這種方式,如果對state和props熟悉的應該比較容易看懂,子元件執行了父元件的方法,同時會把子元件的資料傳遞過去,這樣父元件中的方法就可以使用子元件的資料。

後續我會再說一下,沒有關係的元件之間是如何傳遞資料的,其實更簡單,就跟Android裡面的監聽是一樣,使用監聽的方式,接收資料,並執行自己的操作即可。

相關推薦

RN中子元件元件之間資料傳遞問題

使用RN做專案已經有兩個月了,雖然現在大部分情況下已經使用了Redux,進行狀態的管理和資料的處理,後續會說一下自己是如何使用Redux的,現在先說一下在RN中一個關鍵的資料傳遞問題,雖然後續可能專案中添加了Redux架構,但也不代表這每個頁面都去使用,畢竟為了

React中子元件元件之間傳值

最近公司的專案在用react,所以才開始接觸react,react和vue一樣,都是元件化的框架,那麼子元件和父元件之間怎麼傳值呢? 父元件向子元件傳值 ,父元件通過屬性的形式向子元件傳遞引數,子元件

vue2.0 子元件元件之間的傳值(轉載)

Vue是一個輕量級的漸進式框架,對於它的一些特性和優點在此就不做贅述,本篇文章主要來探討一下Vue子父元件通訊的問題 首先我們先搭好開發環境,我們首先得裝好git和npm這兩個工具(如果有不清楚的同學請自行百度哦) 環境搭建步驟: 開啟git ,執行 npm install --global vue-cl

Java中子之間的呼叫關係

在講之前,一些基本知識是應該具備的: 1.如果一個類中沒有定義構造器,編譯器在編譯時會自動加上預設無參構造器: public ClassName {} 2. this 和 super 的區別。 3.每個類直接或間接是Object的子類,Object只有一個無參構造方法。

Vue 中元件元件之間獲取對方資料方法

父元件獲取子元件的資料和方法 one 在父元件中呼叫子元件時,定義一個ref(其實和選擇器類似): <Common ref="commonChild" :pathologyId="form.pathologyId" /> 在父元件中獲取子元件屬性和方

Vue中用v-model實現元件元件之間資料通訊

在Vue中實現父子元件之間的資料通訊,除了用傳統的Props/emit還有sync外,還能使用v-model來實現(2.2.0 新增)。 型別:{ prop?: string, event?: string } model允許一個自定義元件在使用 v-mod

vue 的元件元件互相獲取資料方法

父元件主動獲取子元件的資料和方法 1.呼叫子元件的時候 定義一個ref <headerchild ref="headerChild"></headerchild> 2.在父元件裡面通過 this.$refs.headerChild.屬性 this.$refs.h

Vue2.0中子元件元件傳遞資料的方法,以完整demo演示

子元件child.vue原始碼:<template> <div class="child"> <button @click="sendData">點擊向父元件傳資料</button> </div> &

Angular2父子元件之間資料傳遞:@Input@Output (上)

為了讓大家學習起來輕鬆、易懂,小編儘量做到篇幅短,語言通俗易懂,知識點分段來講,以免太長了看起來很累,也很容易失去耐心閱讀下去,希望大家理解和支援,同時希望大家點贊和分享出去,讓更多的志同道合的朋友來學習 Angular 提供了@Input和@Output語法來處理元

Vue中子元件呼叫元件的方法

Vue中子元件呼叫父元件的方法 相關Html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title>

vue高階屬性 provide/inject,元件向子元件元件的子元件的子元件...傳遞資料

官網說明:provide 和 inject 主要為高階外掛/元件庫提供用例。並不推薦直接用於應用程式程式碼中 以允許一個祖先元件向其所有子孫後代注入一個依賴,不論元件層次有多深,並在起上下游關係成立的時間裡始終生效。 provide 選項應該是一個物件

元件元件傳值(事件發生在子元件中)事件

專案中一個功能 可能在很多地方都有出現 那麼此時我們肯定是要抽成一個元件, 如果此功能中需要傳值呢 我覺得子元件向父元件傳值, 父元件呼叫子元件裡面的事件, 父元件向子元件傳值云云…. 前兩者真的是需要仔細點琢磨 專案有個需求: 需要對編號:中的值進行純數字驗證並且進行搜尋,

QT 子視窗視窗之間傳輸資料

子窗體類中定義: signals: void sendMapValue(QStringList); //傳送訊號 傳遞資訊 QStringList為引數型別 父視窗中定義: private slots: void receiveMapValue(QStringList)

Android : 事件分發,以及消除子控制元件控制元件互相的影響

效果圖 消除在上下滑的時候讓下面的listview控制元件不進行滑動 如題,先上xml的程式碼 父控制元件listview <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.Con

元件中呼叫子元件元件資料更新傳到子元件後,子元件頁面未更新的問題

問題描述:父元件呼叫了一個子元件,傳遞了一個id的屬性到子元件,但是在子元件中將這個id的props屬性賦值給了data裡面定義的另外一個屬性myId,並且寫了watch監聽這個id的props。 結果:第一次的時候子元件並沒有更新介面(即data裡面的myId屬性沒有更新);第二次及以後就

Vue筆記——子元件元件傳遞資料

Vue專案中經常使用到元件之間的數值傳遞,實現的方法很多,但是原理基本上大同小異。 子元件向父元件出傳遞資料,使用自定義事件的方式。 父元件向子元件傳遞資料,使用props屬性的方式。 一、在子元件中自定義事件 我們可以從子元件中想父元件中傳遞多個數據,在子

vue 元件呼叫子元件方法元件呼叫元件方法

子元件: methods:{ //一開始載入基礎資訊資料 _basicInfo(){ let self = this; self.titleExplain=[];

React 父子元件之間資料傳遞

一、父元件向子元件傳值 父元件通過屬性的方式向子元件傳值,子元件通過函式回撥的方式向父元件傳值。 案例一: 父元件: <PageTitle title="測試頁面標題" /> 子元件: <div>{this.props.title}&l

什麼是VUE的元件元件?那麼元件元件又是怎麼傳值的呢?

有時候我們經常分不清什麼是父元件,什麼又是子元件。現在來簡單說下:我們將某段程式碼封裝成一個元件,而這個元件又在另一個元件中引入,而引入該封裝的元件的檔案叫做父元件,被引入的元件叫做子元件。以上是我個人的理解含義,那麼現在就直接上程式碼吧! 子元件: <templa

vue元件元件與子元件之間通訊

vue元件,元件是一個可複用的功能模組,即將具有相同功能的模組抽取成一個元件,在需要的地方引用即可,這體現了程式碼封裝的思想,下面看一下元件是如何實現: // 定義一個名為 button-counter 的新元件 Vue.component('button-counter',