摘要:在子組件構造函數中訂閱變化設置回調函數賦值給實視圖更新匿名空密碼中更新。利用在中某個到數據攜帶在對象的其他屬性里,把數據更新從視圖傳遞到姓名密碼登錄一定要在目錄中導入文件這樣就可以用原生實現組件之間數據共享。
redux數據管理的基本原理redux是一個提供組件之間數據共享,管理處理的模塊,在react組件中使用十分廣泛,如何在react組件中實現數據共享管理?
1.利用store存儲數據信息,利用store.getState()得到當前的狀態值
導入redux中的createStore方法,創建一個store
import {createStore} from "redux" const store = createStore()
2.state是store某一個時刻的數據值,store里面的數據變更會觸發store.subscribe中回調函數,在里面設置setState引發view更新
3.定義action類型type和攜帶的數據,action是一個對象里面必須有type屬性,它標識了action類型名稱,也可以用函數生成action
const action= { type: "CHANGE", data:"data" } //another way to create a action with function function actionsCreator(obj) { return { type: "CHANGE", name: obj.name, pass: obj.pass } }
4.view中觸發store改變。store.dispatch(action)給dispatch方法傳入action來更新store中數據(dispatch是觸發更新,action是定義更新類型,action類似于定義domEvent中的事件類型click 、onload、onchange······有很多類型,但是觸發還需要調用store.dispatch)
5.在createStore中傳入一個函數作為參數(必須),這個函數是reducer,定義dispatch某個action后state針對這個action如何更新.
reducer(initialState,action)。由于它的功能是根據初始state和action類型生成更新后的state,它接收初始initialState,action作為參數
功能
兩個組件一個UShow 一個UInput
兩者之間共享redux >store里面的數據,一個用來展示,一個用來改變store里面的數據。
方法步驟
1.定義store
//redux.js import {createStore} from "redux" const store = createStore(reducer)
2.定義某個action被dispatch后的state變化規則(這個代碼必須在createStore定義store前面)
下面代碼含義為如果acttion類型是CHANGE那么就返回action對象中的name和pass,借此更新state
const reducer = (initialState = { name: "mayun", pass: "asd" }, actions) => { switch (actions.type) { case "CHANGE": return { name: actions.name, pass: actions.pass } default: return initialState } }
3.定義action對象,即什么類型的action會被分發,也可以在其中攜帶用戶自定義的數據(我們定義的是pass和name)。這里我們用一個函數來生成這個action對象,本質和直接定義action對象沒啥區別
function actionsCreator(obj) { return { type: "CHANGE", name: obj.name, pass: obj.pass } } export { actionsCreator ,const store}
4.用store.subscribe()觸發view更新(在子組件UShow中實現)。
定義一個MyWrap組件作為容器,定義UInput UShow作為它的子組件
const MyWrap=()=>() ReactDOM.render(,document.getElementById("example"))
獲取store數據。在子組件UShow 構造函數constructor中訂閱state變化,設置回調函數賦值給this.state實視圖更新
class Ushow extends React.Component{ constructor(...args){ super(...args) this.state={ name:"匿名", pass:"空密碼" } store.subscribe(()=>{ this.setState({ name:store.getState().name, pass:store.getState().pass }) }) } render(){ return (name:{this.state.name} pass:{this.state.pass}) } }
view UInput中更新store。利用dispatch在UInput 中dispatch 某個action到store(數據攜帶在action對象的其他屬性里),把數據更新從視圖view傳遞到store
class UInput extends React.Component{ sure(){ store.dispatch(actionsCreator({name:this.refs.name.value,pass:this.refs.pass.value})) } render(){ return() } }姓名: 密碼:
一定要在目錄中導入redux文件import {store ,actionsCreator} from "../util/redux.js"
這樣就可以用原生redux實現react組件之間數據共享。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82976.html
摘要:聲明有助于保持我們的同步與底層狀態的聲明性質。值得注意的是,這些挑戰并非特定于。這導致或上出現不一致或意外錯誤。崩潰監控我們使用在和上進行崩潰報告。橋接有一個橋接,用于在本機和之間進行通信。 showImg(https://segmentfault.com/img/bVbd0FA?w=740&h=433);在Android,iOS,Web和跨平臺框架的橫向對比中,React Nativ...
摘要:聲明有助于保持我們的同步與底層狀態的聲明性質。值得注意的是,這些挑戰并非特定于。這導致或上出現不一致或意外錯誤。崩潰監控我們使用在和上進行崩潰報告。橋接有一個橋接,用于在本機和之間進行通信。 showImg(https://segmentfault.com/img/bVbd0FA?w=740&h=433);在Android,iOS,Web和跨平臺框架的橫向對比中,React Nativ...
摘要:聲明有助于保持我們的同步與底層狀態的聲明性質。值得注意的是,這些挑戰并非特定于。這導致或上出現不一致或意外錯誤。崩潰監控我們使用在和上進行崩潰報告。橋接有一個橋接,用于在本機和之間進行通信。 showImg(https://segmentfault.com/img/bVbd0FA?w=740&h=433);在Android,iOS,Web和跨平臺框架的橫向對比中,React Nativ...
摘要:函數屬性或者說事件在組件之間通信過程中是必不可少的,但是切莫讓它影響了大家對單向數據流這一概念的理解。這應該屬于一種的使用方式,而且這樣做有悖單向數據流原則。 上一篇文章 玩轉 React(六)- 處理事件 介紹了在 React 中如何處理用戶事件,以及 React 事件機制與原生 DOM 事件的差異和注意的問題,同時也介紹了事件處理函數中 this 的指向問題以及處理的幾種方式及其優...
閱讀 2308·2021-11-24 09:39
閱讀 3038·2021-10-15 09:39
閱讀 3088·2021-07-26 23:38
閱讀 2288·2019-08-30 11:14
閱讀 3409·2019-08-29 16:39
閱讀 1713·2019-08-29 15:23
閱讀 778·2019-08-29 13:01
閱讀 2663·2019-08-29 12:29