1. 程式人生 > >React Native 子元件修改父元件的State

React Native 子元件修改父元件的State

React Native 子元件傳遞State給父元件

一.原理

React本身是單向資料流,父元件可以傳遞props給子元件。
那麼假如要實現React / ReactNative 中父子元件通訊間的雙向資料流,思路可以是在這樣:

  1. 父元件向子元件傳遞props,其中props中帶有子元件的初始化資料以及回撥方法
  2. 子元件手動觸發父函式傳遞進來的回撥方法,同時時將子元件的資料傳遞回去
    這裡寫圖片描述
    PS.使用 props 來傳遞事件,並通過回撥的方式實現,這樣的實現其實不是特別好,但在沒有任何工具(redux)的情況下不失為一種簡單的實現方式

二.程式碼演示

[email protected]

0.56,使用ES6語法,優先使用箭頭函式

父元件

export default class Parent extends Component{
    //初始狀態
    constructor(props) {
        super(props);
        this.state = {
          stateName:'parent',
        };
    };
    //回撥函式:將傳來的引數用this.setState方法修改初始狀態值
    updateState (data) {              //這個data是個引數
        this
.setState(data); } render(){ return <Child stateName={this.state.stateName} //將父元件的stateName傳給子元件 updateParentState={this.updateState.bind(this)} //繫結父元件的updateState方法中的this /> } }

子元件|Es6

    const Child =(props)=>{
        const
{stateName} = props; //即stateName=props.stateName,取出傳遞進來的props中的stateName // setParentState=(data)=>{ props.updateParentState(data); } return( <View> <Text //這裡要注意的是,返回的引數必須是一個物件,所以要用{}括起來,而不是括號() onPress={() => {this.setParentState( {stateName: 'child'} )} } >我的狀態是{stateName}</Text> </View> ) }

三.附錄

相關推薦

React Native 元件修改元件State

React Native 子元件傳遞State給父元件 一.原理 React本身是單向資料流,父元件可以傳遞props給子元件。 那麼假如要實現React / ReactNative 中父子元件通訊間的雙向資料流,思路可以是在這樣: 父元件向子元件

通過元件修改元件內的值

1.先在components下建立一個新的vue檔案,新增一些基本的配置。 2.在父元件中引用這個新建立的vue並註冊 import SelectItem from "./SelectItem" export default{ components:{SelectItem}

vue元件修改元件的三種方法

       一直使用$emit觸發父元件的事件方法來實現改變父元件的值,導致把其他方法都給忘了。特別來整理下,加深下印象吧。 1. $emit('event', val)  最常用的一種方法,父元件通過v-on繫結一個事件,在事件中修改自己的值,子元件通過$emit觸發

Vue.js2.0中子元件修改元件傳遞過來的props

如果非得需要修改傳入的prop為物件的屬性,又不想破壞原物件,可以深拷貝這個物件,ES6提供的Object.assign({},prop)的返回值就是一個全新的物件,操作這個新物件不會影響舊物件,如果不用ES5就自己遞迴實現拷貝器。 程式碼 1:給compu

vue2中子元件修改元件傳入的prop,並向元件$emit一個廣播事件

1、在vue中:        prop 是單向繫結的:當父元件的屬性變化時,將傳導給子元件,但是不會反過來。這是為了防止子元件無意修改了父元件的狀態——這會讓應用的資料流難以理解。      

react native 控制元件傳遞資料給控制元件

/** * Created by fanxiaole on 17/3/24. * 需求 在子控制元件(select)中選擇性別 在父控制元件(form)中獲取這個值並提交 * */ //步驟 //1.建立父控制元件(form) 並新增子控制元件 同時利用

react 元件元件傳值簡單示例

父元件 data即為要向子元件 ExpressionTree 元件傳遞的值, 子元件 node.props.title,就相當於this.props.title,onSelect api 的理解請參考 ant design 元件的 樹選擇元件

React 元件之間的傳值--尤其元件元件傳值

元件之間的傳值有三種情況, 1.父元件給子元件傳值 2.子元件給父元件傳值 3.兄弟元件相互傳值 1.父元件給子元件傳值 子元件中通過props 封裝屬性,當父控制元件用到子元件是 給屬性賦值 例: 子元件 import React from 'react

React封裝Fetch獲取Api, 元件元件的通訊

一個專案下來,和後臺資料的互動實在是太多了,如果不封裝一下就感覺怪怪的,而且也很不DRY.封裝起來之後,會省事很多很多. 封裝Fetch // MyFetch.js const API_URL = process.env.REACT_APP_DE

react 元件元件傳值

class Parent extends React.Component{ constructor(){ super(); this.state = { msg:"" } } show(v){ this.

React 的資料流動(反向由元件元件傳遞資料)

在React中,資料都大體上都是單向資料流動的,由父節點傳到子節點,子元件都是通過Props從父元件那裡獲取資料,這樣的話,如果很多子元件用了資料只需要改變父元件的資料子元件的資料都會發生改變reac

react元件元件傳遞資料例項

這個例子很簡單,看一下就懂: class Son extends React.Component { render() { return <input onChange={thi

React筆記(二):元件元件傳值

通過回撥函式 在父元件中定義好state和處理state的回撥函式,在子元件中通過this.props獲取函式的名稱,然後在子元件中向函式傳入改變的state 父元件: class BrowserPerformance extends Compon

小程式學習之旅----slot 元件呼叫元件的方法、元件呼叫元件的方法

slot子元件 <!--pages/user/user.wxml--> <header title='{{title}}'></header> {{title}} <footer> <button>我是footer子元件裡的按鈕&l

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

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

元件改變元件的值

子元件改變父元件的值,會報錯。其實是採用單向資料流,子元件不能直接改變父元件的值,是以單向資料流的方式流轉資料。可以採用以下兩種減少程式碼量的方式改變父元件的值(忽略on和emit事件方式)。 方法一::xx.sync 和 $emit(‘update:xx’) Vue.compone

基於React Native實現的介面載入元件react-native-loadview

react-native-loadview 基於React Native實現的介面載入元件, Installation npm install react-native-loadview --save Import into your project import

React-Native學習之第三方開源元件--側滑欄----react-native-side-menu

react-native-side-menu 側滑欄元件 1.匯入方式 切換到當前目錄在命令列執行下面的命令 npm install react-native-side-menu --save 開啟package.json檢視是否成功匯入

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

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

帶你徹底看懂React Native和Android原生控制元件之間的對映關係

此文基於react natve的 September 2018 - revision 5 版本 本人學校畢業後就當了安卓爬坑專業戶,3年來總算爬習慣了,不料今年掉進了RN這個天坑,從此開始了我的悲慘人生。。。Anyway,RN的思想還是值得學習的,今天就從Android的角度開始分析一下react nati