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

react16.8.0以上MobX在hook中的使用方法詳解

 更新時間:2023年07月12日 10:22:02   作者:Grewer  
這篇文章主要為大家介紹了react16.8.0以上MobX在hook中的使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言 

關(guān)于 mobX 在 react 16.8.0 以上的用法

以下例子均取自官網(wǎng)文檔

一般用法

import { observer, useLocalStore } from 'mobx-react';  
const Hooks = observer(() => {  
 const todo = useLocalStore(() =>  ({  
 title: 'Click to toggle', done: false,  toggle() {  
  todo.done = !todo.done  
  },  
 get emoji() {  
 return todo.done ? '??' : '??'  
  },  
  }));  
 return <div onClick={todo.toggle}>  
    <h3>{todo.title} {todo.emoji}</h3>  
 </div>  
})

可以看到原來的修飾符@observer,現(xiàn)在是使用 HOC 來進(jìn)行擴(kuò)展的;

修飾方法

1:

import { useLocalStore, useObserver } from 'mobx-react';  
function Person() {  
 const person = useLocalStore(() => ({ name: 'John' }))  
 return useObserver(() => (  
 <div>  
    {person.name}  
    <button onClick={() => (person.name = 'Mike')}>No! I am Mike</button>  
 </div>  
 ))}

使用 useObserver(()=>JSX.Element) 方法取代 observer(()=>JSX.Element)

2:

import { Observer, useLocalStore } from 'mobx-react';  
function ObservePerson() {  
 const person = useLocalStore(() => ({ name: 'John' }))  
 return (  
 <div>  
    {person.name} <i>I will never change my name</i>  
    <div>  
        <Observer>{() => <div>{person.name}</div>}</Observer>  
        <button onClick={() => (person.name = 'Mike')}>  
 I want to be Mike  </button>  
    </div>  
 </div>  
 )}

使用部分渲染, 只有被 <Observer></Observer> 包裹的才能監(jiān)聽到對應(yīng)值的改變

優(yōu)化,分離,傳值

import React, { FC } from 'react';import { observer, useLocalStore } from 'mobx-react';  
function initialFn(source) {  
 return ({  
 count: 2, get multiplied() {  
 return source.multiplier * this.count  
  },  
  inc() {  
 this.count += 1  },  
  });  
}  
const Counter: FC<{ multiplier: number }> = observer(props => {  
 const store = useLocalStore(  
  initialFn,  
 Object.assign({ a: 1 }, props),// 可以傳任意值  
  );  
 return (  
 <div>  
    <button id="inc" onClick={store.inc}>  
    {`Count: ${store.count}`}  
    </button>  
    <span>{store.multiplied}</span>  
 </div>  
 )})

這種分離的方法,基本已經(jīng)耦合性已經(jīng)很低了

2021.3.11 更新

之前 mobx 官方對于 api 又進(jìn)行了修改,本文也做對應(yīng)的修改

重要修改useLocalStore 將要廢棄 !!

使用 useLocalObservable 替代, 而且他們的使用方案也不同:

import { useLocalObservable, Observer } from "mobx-react-lite"
const Todo = () => {
    const todo = useLocalObservable(() => ({
        title: "Test",
        done: true,
        toggle() {
            this.done = !this.done
        }
    }))
    return (
        <Observer>
            {() => (
                <h1 onClick={todo.toggle}>
                    {todo.title} {todo.done ? "[DONE]" : "[TODO]"}
                </h1>
            )}
        </Observer>
    )
}

可直接作為局部或者全局的變量存儲

const user = mobx.observable({
    name: "Noa"
})
const Todo = () => {
    return (
        <Observer>
            {() => (
                <h1>
                   {user.name}
                </h1>
            )}
        </Observer>
    )
}

以上就是react16.8.0以上MobX在hook中的使用方法詳解的詳細(xì)內(nèi)容,更多關(guān)于react MobX hook使用方法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React?forwardRef?用法案例分析

    React?forwardRef?用法案例分析

    這篇文章主要介紹了React forwardRef用法,forwardRef允許你的組件使用ref將一個DOM節(jié)點暴露給父組件,本文結(jié)合案例分析給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 淺談react性能優(yōu)化的方法

    淺談react性能優(yōu)化的方法

    這篇文章主要介紹了淺談react性能優(yōu)化的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • React19 Diff 算法的具體實現(xiàn)

    React19 Diff 算法的具體實現(xiàn)

    本文主要介紹了React19 Diff 算法的具體實現(xiàn),該算法用于高效地更新虛擬DOM,它通過優(yōu)化傳統(tǒng)樹diff算法,將復(fù)雜度從O(n^3)降低到O(n),感興趣的可以了解一下
    2026-05-05
  • React 中實現(xiàn)代碼分割的方法與實踐指南

    React 中實現(xiàn)代碼分割的方法與實踐指南

    這篇文章給大家介紹了React中實現(xiàn)代碼分割的方法,包括路由級代碼分割和組件級代碼分割,并闡述了其原理和實際應(yīng)用場景,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • 談?wù)凴eact中的Render Props模式

    談?wù)凴eact中的Render Props模式

    這篇文章主要介紹了談?wù)凴eact中的Render Props模式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 探討JWT身份校驗與React-router無縫集成

    探討JWT身份校驗與React-router無縫集成

    這篇文章主要為大家介紹了JWT身份校驗與React-router無縫集成的探討解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • React渲染機(jī)制及相關(guān)優(yōu)化方案

    React渲染機(jī)制及相關(guān)優(yōu)化方案

    這篇文章主要介紹了react中的渲染機(jī)制以及相關(guān)的優(yōu)化方案,內(nèi)容包括react渲染步驟、concurrent機(jī)制以及產(chǎn)生作用的機(jī)會,簡單模擬實現(xiàn) concurrent mode,基于作業(yè)調(diào)度優(yōu)先級的思路進(jìn)行項目優(yōu)化的兩個hooks,感興趣的小伙伴跟著小編一起來看看吧
    2023-07-07
  • React實現(xiàn)路由鑒權(quán)的實例詳解

    React實現(xiàn)路由鑒權(quán)的實例詳解

    React應(yīng)用中的路由鑒權(quán)是確保用戶僅能訪問其授權(quán)頁面的方式,用于已登錄或具有訪問特定頁面所需的權(quán)限,這篇文章就來記錄下React實現(xiàn)路由鑒權(quán)的流程,需要的朋友可以參考下
    2024-07-07
  • 詳解如何使用React和MUI創(chuàng)建多選Checkbox樹組件

    詳解如何使用React和MUI創(chuàng)建多選Checkbox樹組件

    這篇文章主要為大家詳細(xì)介紹了如何使用 React 和 MUI(Material-UI)庫來創(chuàng)建一個多選 Checkbox 樹組件,該組件可以用于展示樹形結(jié)構(gòu)的數(shù)據(jù),并允許用戶選擇多個節(jié)點,感興趣的可以了解下
    2024-01-01
  • React Hook的使用示例

    React Hook的使用示例

    這篇文章主要介紹了React Hook的使用示例,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-04-04

最新評論

德化县| 合肥市| 韶关市| 广饶县| 宁德市| 黄浦区| 临潭县| 濉溪县| 华蓥市| 保定市| 茌平县| 夏河县| 乌拉特中旗| 鸡泽县| 崇仁县| 左贡县| 漾濞| 瑞昌市| 桓仁| 宿松县| 蚌埠市| 屯留县| 克山县| 城市| 抚州市| 马尔康县| 思南县| 通化市| 黑龙江省| 通榆县| 佛教| 锡林郭勒盟| 乐平市| 原平市| 资源县| 平泉县| 石棉县| 左云县| 香格里拉县| 石屏县| 娄烦县|