官术网_书友最值得收藏!

  • MobX Quick Start Guide
  • Pavan Podila Michel Weststrate
  • 297字
  • 2021-08-05 10:34:25

A reactive UI

On the topic of reactions, it is worth mentioning that the UI is one of the most glorious reactions (or side-effect) you can have in an app. As we saw in the earlier chapter, UI depends on data and applies a transformation function to generate the visual representation. In the MobX world, this UI is also reactive, in the sense that it reacts to the changes in data and automatically re-renders itself. 

MobX provides a companion library called mobx-react that has bindings to React. By using a decorator function (observer()from mobx-react, you can transform a react component to observe the observables used in the render() function. When they change, a re-render of the react component is triggered. Internally, observer() creates a wrapper component that uses a plain reaction() to watch the observables and re-render as a side-effect. This is why we treat UI as being just another side-effect, albeit a very visible and obvious one. 

A short example of using observer() is shown next. We are using a stateless functional component, which we are passing to the observer. Since we are reading the item observable, the component will now react to changes in item. After two seconds, when we update item, the ItemComponent will automatically re-render. Take a look at this:

import { observer } from 'mobx-react';
import { observable } from 'mobx';
import ReactDOM from 'react-dom';
import React from 'react';

const item = observable.box(30);

// 1. Create the component with observer
const ItemComponent = observer(() => {
// 2. Read an observable: item
return <h1>Current Item Value = {item.get()}</h1>;
});

ReactDOM.render(<ItemComponent />, document.getElementById('root'));

// 3. Update item
setTimeout(() => item.set(50), 2000);

We will cover mobx-react in Chapter 3A React App with MobX, and also throughout this book.

主站蜘蛛池模板: 伊金霍洛旗| 加查县| 安丘市| 顺平县| 长乐市| 鸡西市| 威海市| 万载县| 阳城县| 克山县| 福泉市| 阿拉善盟| 米易县| 家居| 三门峡市| 本溪市| 汉源县| 大悟县| 九江县| 济阳县| 武陟县| 阜新市| 茌平县| 扎赉特旗| 沙洋县| 丽水市| 绍兴市| 磴口县| 花莲市| 林州市| 宁海县| 井冈山市| 武乡县| 荃湾区| 翁牛特旗| 海门市| 海丰县| 耒阳市| 香格里拉县| 定陶县| 云南省|