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

react如何獲取state的值并更新使用

 更新時(shí)間:2022年08月08日 10:13:15   作者:馬優(yōu)晨  
這篇文章主要介紹了react如何獲取state的值并更新使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

react獲取state值并更新使用

react獲取state的值并且修改分為兩種情況:

在視圖層處理

//在 state 中飯?jiān)O(shè)置初始值
state={
? ? ? name:'',
? ? ? age:''
?}
//通過(guò) 控制一個(gè)事件觸發(fā)然后setState 去設(shè)置
setName=()=>{
? ? this.setState({
? ? ? ?name
? ? })
}

在model層處理

view層

? //前端通過(guò)dispatch 去調(diào)用changeTab 接口
? onTabsChange = (key) => { ?
? ? this.props.dispatch({
? ? ? type: `${this.module}/changeTab`, ?
? ? ? payload: key
? ? });
? }

model層:

const moduleName = 'mayouchen';
let defaultState = {
? activeTabKey: "1"
};
export default {
? namespace: moduleName,
? state: {
? ? moduleName: moduleName,
? ? defaultState,
? ? ...defaultState
},
effects: {
?* changeTab({ payload, }, { call, put, select }) { ?
? ? ? ?// 更新 ?activeTabKey ?
? ? ? ?yield put({
? ? ? ? ?type:'updateActiveTabKey',
? ? ? ? ?payload
? ? ? ?});?
? ? ? // 更新完 ?activeTabKey ?就可以使用 ?activeTabKey 更新后的值
? ? ? ?yield put({type: 'getDataByTab'});
?},
? * getDataByTab({payload }, { call, put, select }) {?
? ? ? ? let { activeTabKey } = yield select(state => state[moduleName]);
? ? ? ? //切換TAB調(diào)用不同接口
? ? ? ? if(activeTabKey == "1") { ?//商戶(hù)信息
? ? ? ? ? yield put({type:'businessInformation', payload: {}});
? ? ? ? } else if (activeTabKey == "2" ) { ?//審批信息
? ? ? ? ? yield put({type:'approvalInformation', payload: {}})
? ? ? ? }else if (activeTabKey == "3" ) {
? ? ? ? }
? ? },?
? ?* businessInformation ({payload, }, { call, put, select }) {
? ? ?const result = yield call(read, payload);
? ? ?if (result ) {
? ? ? ?let { data } = result ;
? ? ? ?yield put({ type: 'getBusinessInformationData', payload: {...data }});
? ? ?}
? ? ?else {
? ? ? ?message.error(`獲取信息失?。?{entityRes.globalError}`);
? ? ?}
? }
}
?reducers: {
? ? ?updateActiveTabKey(state, action) {
? ? ? return {
? ? ? ? ...state,
? ? ? ? activeTabKey: action.payload
? ? ? };
? ? }
}

react中state基本使用

有狀態(tài)組件和無(wú)狀態(tài)組件

  • 函數(shù)組件又叫做 無(wú)狀態(tài)組件,類(lèi)組件又叫做 有狀態(tài)組件
  • 狀態(tài)( state )即 數(shù)據(jù)
  • 函數(shù)組件沒(méi)有自己的狀態(tài),只負(fù)責(zé)數(shù)據(jù)展示(靜)
  • 類(lèi)組件有自己的狀態(tài),負(fù)責(zé)更新Ul,讓頁(yè)面“動(dòng)”起來(lái)

比如計(jì)數(shù)器案例中,點(diǎn)擊按鈕讓數(shù)值加1。0和1就是不同時(shí)刻的狀態(tài),而由0變?yōu)?就表示狀態(tài)發(fā)生了變化。狀態(tài)變化后,UI也要相應(yīng)的更新。React中想要實(shí)現(xiàn)該功能,就要使用有狀態(tài)組件來(lái)完成。

state的基本使用

  • 狀態(tài)( state )即數(shù)據(jù),是組件內(nèi)部的私有數(shù)據(jù),只能在組件內(nèi)部使用
  • state的值是對(duì)象,表示一個(gè)組件中可以有多個(gè)數(shù)據(jù)
  • 通過(guò) this.state 來(lái)獲取狀態(tài)

class App extends React.Component {
    // constructor() {
    //     super()
    //     // 初始化state
    //     this.state = {
    //         count: 0
    //     }
    // }
    // 簡(jiǎn)化語(yǔ)法初始化state  【推薦】
    state = {
        count: 0,
    }
    render() {
        return(
            <div>
                <h1>計(jì)數(shù)器:{this.state.count}</h1>
            </div>
        )
    }
}
// 渲染組件
ReactDOM.render(<App />, document.getElementById("root"))

setState修改狀態(tài)

  • 狀態(tài)是可變的
  • 語(yǔ)法:this.setState({ 要修改的數(shù)據(jù) })
  • 注意:不要直接修改 state 中的值,這是錯(cuò)誤的?。?!
  • setState() 作用:1. 修改state 2. 更新UI
  • 思想:數(shù)據(jù)驅(qū)動(dòng)視圖

class App extends React.Component {
    // 簡(jiǎn)化語(yǔ)法初始化state  【推薦】
    state = {
        count: 0,
    }
    render() {
        return(
            <div>
                <h1>計(jì)數(shù)器:{this.state.count}</h1>
                <button onClick = {() => {
                    this.setState({
                        count: this.state.count + 1
                    })
                }}>+1</button>
            </div>
        )
    }
}
// 渲染組件
ReactDOM.render(<App />, document.getElementById("root"))

從JSX中抽離事件處理程序

  • JSX中摻雜過(guò)多JS邏輯代碼,會(huì)顯得非?;靵y
  • 推薦:將邏輯抽離到單獨(dú)的方法中,保證JSX結(jié)構(gòu)清晰

  • 原因:事件處理程序中 this的值為undefined
  • 希望:this 指向組件實(shí)例( render方法中的this即為組件實(shí)例)

事件綁定this指向

1. 箭頭函數(shù)

  • 利用箭頭函數(shù)自身不綁定 this 的特點(diǎn)
  • render() 方法中的 this 為組件實(shí)例,可以獲取到 setState()

2. Function.prototype.bind()

利用 ES5 中的 bind() 方法,將事件處理程序中的 this 與組件實(shí)例綁定到一起

class App extends React.Component {
    constructor() {
        super()
        this.state = {
            count: 0,
        }
        this.onIncrement = this.onIncrement.bind(this)
    }
    // 事件處理程序
    onIncrement() {
        console.log('事件處理程序中的this:', this)
        this.setState({
            count: this.state.count + 1
        })
    }
    render() {
        return(
            <div>
                <h1>計(jì)數(shù)器:{this.state.count}</h1>
                <button onClick = { this.onIncrement }>+1</button>
            </div>
        )
    }
}
// 渲染組件
ReactDOM.render(<App />, document.getElementById("root"))

3. class的實(shí)例方法

  • 利用 箭頭函數(shù) 形式的 class實(shí)例 方法
  • 注意∶該語(yǔ)法是實(shí)驗(yàn)性語(yǔ)法,但是,由于 babel 的存在可以直接使用

class App extends React.Component {
    state = {
        count: 0,
    }
        
    // 事件處理程序
    onIncrement = ()=> {
        console.log('事件處理程序中的this:', this)
        this.setState({
            count: this.state.count + 1
        })
    }
    render() {
        return(
            <div>
                <h1>計(jì)數(shù)器:{this.state.count}</h1>
                <button onClick = { this.onIncrement }>+1</button>
            </div>
        )
    }
}
// 渲染組件
ReactDOM.render(<App />, document.getElementById("root"))

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 教你react中如何理解usestate、useEffect副作用、useRef標(biāo)識(shí)和useContext

    教你react中如何理解usestate、useEffect副作用、useRef標(biāo)識(shí)和useContext

    這篇文章主要介紹了react中如何理解usestate、useEffect副作用、useRef標(biāo)識(shí)和useContext,其實(shí)與vue中的ref和reactive一樣,通過(guò)useState獲取到的數(shù)據(jù)可以實(shí)現(xiàn)組件視圖實(shí)時(shí)交互,而普通定義的數(shù)據(jù)僅僅在業(yè)務(wù)中使用,需要的朋友可以參考下
    2022-11-11
  • Shopee在React?Native?架構(gòu)方面的探索及發(fā)展歷程

    Shopee在React?Native?架構(gòu)方面的探索及發(fā)展歷程

    這篇文章主要介紹了Shopee在React?Native?架構(gòu)方面的探索,本文會(huì)從發(fā)展歷史、架構(gòu)模型、系統(tǒng)設(shè)計(jì)、遷移方案四個(gè)方向逐一介紹我們?nèi)绾我徊讲降貪M(mǎn)足多團(tuán)隊(duì)在復(fù)雜業(yè)務(wù)中的開(kāi)發(fā)需求,需要的朋友可以參考下
    2022-07-07
  • 淺談對(duì)于react-thunk中間件的簡(jiǎn)單理解

    淺談對(duì)于react-thunk中間件的簡(jiǎn)單理解

    這篇文章主要介紹了淺談對(duì)于react-thunk中間件的簡(jiǎn)單理解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 淺談react-native熱更新react-native-pushy集成遇到的問(wèn)題

    淺談react-native熱更新react-native-pushy集成遇到的問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談react-native熱更新react-native-pushy集成遇到的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • React?錯(cuò)誤邊界Error?Boundary使用示例解析

    React?錯(cuò)誤邊界Error?Boundary使用示例解析

    這篇文章主要為大家介紹了React?錯(cuò)誤邊界Error?Boundary使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例

    react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例

    本文主要介紹了react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • React實(shí)現(xiàn)雙滑塊交叉滑動(dòng)

    React實(shí)現(xiàn)雙滑塊交叉滑動(dòng)

    這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)雙滑塊交叉滑動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • React中的合成事件是什么原理

    React中的合成事件是什么原理

    React 中的事件,是對(duì)原生事件的封裝,叫做合成事件。這篇文章主要通過(guò)幾個(gè)簡(jiǎn)單的示例為大家詳細(xì)介紹一下React中的合成事件,感興趣的可以了解一下
    2023-02-02
  • React中使用echarts-for-react的方法示例

    React中使用echarts-for-react的方法示例

    echarts-for-react則是ECharts在React生態(tài)中的官方封裝組件,它讓開(kāi)發(fā)者能夠輕松地在React應(yīng)用中集成ECharts圖表,本文就來(lái)介紹一下echarts-for-react的使用,感興趣的可以了解一下
    2025-03-03
  • 詳解前端路由實(shí)現(xiàn)與react-router使用姿勢(shì)

    詳解前端路由實(shí)現(xiàn)與react-router使用姿勢(shì)

    本篇文章主要介紹了詳解前端路由和react-router使用姿勢(shì),詳細(xì)的介紹了react-router的用法,有興趣的可以了解一下
    2017-08-08

最新評(píng)論

射洪县| 饶河县| 泌阳县| 永康市| 江油市| 德保县| 汶上县| 钦州市| 博罗县| 武安市| 安岳县| 涟水县| 曲松县| 全椒县| 顺义区| 平远县| 阜新| 台前县| 金塔县| 江口县| 凤山市| 双江| 资阳市| 威远县| 同德县| 修水县| 同仁县| 东丽区| 临汾市| 广丰县| 柯坪县| 浮梁县| 盐边县| 苗栗县| 黔西县| 会泽县| 怀远县| 确山县| 邵东县| 广南县| 麻栗坡县|