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

React使用Mobx6.x共享狀態(tài)問(wèn)題

 更新時(shí)間:2023年10月13日 09:11:50   作者:明知山_  
這篇文章主要介紹了React使用Mobx6.x共享狀態(tài)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

React使用Mobx6.x共享狀態(tài)

文檔地址

安裝mobx、mobx-react-lite
 

mobx-react-litemobx-react的輕量級(jí)版本

yarn add mobx mobx-react-lite

src目錄下新建store文件夾,新增count.js文件

  • count為共享的數(shù)據(jù)
  • addCount為共享的方法
import { makeAutoObservable } from "mobx"
export default makeAutoObservable({
    count: 0,
    addCount() {
        this.count++
    }
})

jsx文件引入

observer 包裹的組件可以監(jiān)聽(tīng)store的值并改變

import { useEffect } from 'react'
import countStore from '@/store/count'
import { observer } from "mobx-react-lite"
export default observer(() => {
    //監(jiān)聽(tīng)mobx觸發(fā)事件
    useEffect(() => {
        console.log(countStore.count)
    }, [countStore.count])
    return (
        <div>
            <div>count為:{countStore.count}</div>
            <button onClick={() => countStore.addCount()}>+1</button>
        </div>
    )
})

react-Mobx基本使用

十分鐘交互式的 MobX + React 教程

mobx 的核心理念是 簡(jiǎn)單、可擴(kuò)展的狀態(tài)管理庫(kù)。比redux和react-redux方便許多

先create-react-app 構(gòu)建一個(gè)項(xiàng)目

1.裝包

1.1安裝mobx mobx-react

npm install  mobx mobx-react -S

1.2安裝裝飾器裝包搭配依賴(lài)去解析(可選),裝飾器作用>代碼更簡(jiǎn)潔

  npm i --save-dev babel-plugin-transform-decorators-legacy

1.3裝完依賴(lài),然后json 文件中配置啟用,現(xiàn)在采用的是babel7所以要這樣配置,也可以單獨(dú)在.babelrc文件中配置。

2者不能沖突,選其一

 "babel": {
    "presets": [
      "@babel/preset-env",
      "react-app"
    ],
    "plugins": [
      ["@babel/plugin-proposal-decorators", {
        "legacy": true
      }],
      ["@babel/plugin-proposal-class-properties", {
        "loose": true
      }]
    ]
  },

2.項(xiàng)目應(yīng)用

2.1一般先在src創(chuàng)建個(gè)store文件夾(定義狀態(tài)和創(chuàng)建實(shí)例)

2.2定義狀態(tài)并使其可觀察(狀態(tài)可以自定義創(chuàng)建)

import { observable, computed, action } from "mobx";
class OrderLine {
	// 被觀察者屬性
    @observable price = 0;
    @observable amount = 1;
    // 計(jì)算屬性  
    @computed
    get total() {
        return this.price * this.amount;
    }
    @observable length = 2;
    @computed
    get squared() {
        return this.length * this.length;
    }
    set squared(value) {
        // 這是一個(gè)自己的動(dòng)作,不需要注解
        this.length = Math.pow(2, value);
    }
    //觸發(fā)的動(dòng)作
    @action.bound
    resize() {
        this.price++;
    }
}
export default OrderLine;

2.3 在store目錄創(chuàng)建index.js (創(chuàng)建倉(cāng)庫(kù)實(shí)例)

import OrderLine from "./OrderLine";
class Stores {
    constructor() {
        this.orderLine = new OrderLine();  //每次創(chuàng)建的狀態(tài)在這里注入
    }
}
export default new Stores();

2.4 類(lèi)似react-redux一樣,MOBX也有mobx-react實(shí)現(xiàn)mobx與react的鏈接,所以在根組件中使用注入這個(gè)倉(cāng)庫(kù)。

import React, { Component } from "react";
import MobxTest from "./Components/Mobox/MobxTset01";
import stores from "./Components/Mobox/store";
import { Provider } from "mobx-react";
class App extends Component {
    render() {
        return (
            <Provider {...stores}>
                <MobxTest />
            </Provider>
        );
    }
}
export default App;

2.5 創(chuàng)建視圖以響應(yīng)狀態(tài)的變化,在別的組件中使用注解的方式使用

import React, { Component } from "react";
import { observer, inject } from "mobx-react";
import { observable } from "mobx";
//@inject() 將組件鏈接到 stores,以props的形式傳遞給目標(biāo)組件
@inject("orderLine")
@observer  //觀察者
class MobxTest extends Component {
  constructor(props) {
    super(props);
    this.state = {};
  }
  componentWillMount() {
    console.log("componentWillMount方法");
  }
  onReset() {
    this.props.orderLine.resize(); //狀態(tài)中定義的方法從而改變倉(cāng)庫(kù)中的值
  }
  render() {
    //通過(guò)發(fā)現(xiàn)倉(cāng)庫(kù)中定義的值,和方法都可以通過(guò)props屬性拿到注入orderLine所有屬性和方法
    console.log(this.props,'this.props');
    console.log(this.props.orderLine.amount);
    return (
      <div>
        <p>{this.props.orderLine.total}</p>
        {/* <p>{this.secondsPassed}</p> */}
        <p>{this.props.orderLine.total}</p>
        <button onClick={this.onReset.bind(this)}>按鈕</button>
      </div>
    );
  }
}
export default MobxTest;

效果圖 :

Mobx官網(wǎng)傳送門(mén):https://cn.mobx.js.org/

總結(jié)

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

相關(guān)文章

  • React實(shí)現(xiàn)監(jiān)聽(tīng)粘貼事件并獲取粘貼板中的截圖

    React實(shí)現(xiàn)監(jiān)聽(tīng)粘貼事件并獲取粘貼板中的截圖

    這篇文章主要介紹了React實(shí)現(xiàn)監(jiān)聽(tīng)粘貼事件并獲取粘貼板中的截圖方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React-Native中props具體使用詳解

    React-Native中props具體使用詳解

    本篇文章主要介紹了React-Native中props具體使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • ReactNative列表ListView的用法

    ReactNative列表ListView的用法

    本篇文章主要介紹了ReactNative列表ListView的用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 關(guān)于React動(dòng)態(tài)加載路由處理的相關(guān)問(wèn)題

    關(guān)于React動(dòng)態(tài)加載路由處理的相關(guān)問(wèn)題

    這篇文章主要介紹了關(guān)于React動(dòng)態(tài)加載路由處理的相關(guān)問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • react基礎(chǔ)知識(shí)總結(jié)

    react基礎(chǔ)知識(shí)總結(jié)

    這篇文章主要介紹了react常用的基礎(chǔ)知識(shí)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用react框架,感興趣的朋友可以了解下
    2021-04-04
  • 使用React實(shí)現(xiàn)輪播效果組件示例代碼

    使用React實(shí)現(xiàn)輪播效果組件示例代碼

    React剛出來(lái)不久,組件還比較少,不像jquery那樣已經(jīng)有很多現(xiàn)成的插件了,于是自己寫(xiě)了一個(gè)基于React的輪播效果組件,現(xiàn)在分享給大家,有需要的可以參考借鑒。
    2016-09-09
  • React函數(shù)式組件Hook中的useEffect函數(shù)的詳細(xì)解析

    React函數(shù)式組件Hook中的useEffect函數(shù)的詳細(xì)解析

    useEffect是react v16.8新引入的特性。我們可以把useEffect hook看作是componentDidMount、componentDidUpdate、componentWillUnmounrt三個(gè)函數(shù)的組合
    2022-10-10
  • 三分鐘搞懂react-hooks及實(shí)例代碼

    三分鐘搞懂react-hooks及實(shí)例代碼

    React?Hooks是今年最勁爆的新特性真的毫不夸張。如果你也對(duì)react感興趣,或者正在使用react進(jìn)行項(xiàng)目開(kāi)發(fā),請(qǐng)抽出點(diǎn)時(shí)間閱讀下此文
    2022-03-03
  • 在React聊天應(yīng)用中實(shí)現(xiàn)圖片上傳功能

    在React聊天應(yīng)用中實(shí)現(xiàn)圖片上傳功能

    在現(xiàn)代聊天應(yīng)用中,除了文字和表情,圖片分享也是一個(gè)重要的功能,本文將詳細(xì)介紹如何在基于 React 的聊天應(yīng)用中實(shí)現(xiàn)圖片上傳和預(yù)覽功能,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2025-05-05
  • react使用axios進(jìn)行api網(wǎng)絡(luò)請(qǐng)求的封裝方法詳解

    react使用axios進(jìn)行api網(wǎng)絡(luò)請(qǐng)求的封裝方法詳解

    這篇文章主要為大家詳細(xì)介紹了react使用axios進(jìn)行api網(wǎng)絡(luò)請(qǐng)求的封裝方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03

最新評(píng)論

密山市| 西畴县| 定西市| 仲巴县| 麻城市| 察雅县| 晋中市| 洞口县| 手游| 塔城市| 五河县| 手机| 稻城县| 陈巴尔虎旗| 石渠县| 朝阳区| 巴里| 桃源县| 大化| 平湖市| 孝昌县| 湟中县| 镇坪县| 贡嘎县| 云浮市| 亳州市| 张家口市| 沾化县| 祁连县| 洪泽县| 娱乐| 错那县| 新丰县| 峡江县| 突泉县| 汨罗市| 垦利县| 湖北省| 喀喇沁旗| 滕州市| 内乡县|