ckinmind / ReactCollect

📦收集整理所有在使用React/Mobx中遇到的问题, 请看issues
93 stars 15 forks source link

关于mobx中的autoRun #93

Open ckinmind opened 7 years ago

ckinmind commented 7 years ago

参考资料:Mobx 思想的实现原理,及与 Redux 对比

Mobx 最关键的函数在于 autoRun,我们发现这个函数非常智能,用到了什么属性,就会和这个属性挂上钩,从此一旦这个属性发生了改变,就会触发回调,通知你可以拿到新值了。没有用到的属性,无论你怎么修改,它都不会触发回调,这就是神奇的地方

ckinmind commented 7 years ago

用法(在apple-busket-redux中)

/* mobx实现 */

import React from 'react';
import ReactDOM from 'react-dom';
import appleStore from './mobx/appleStore';
import AppleBasket from './mobx/AppleBasket';
import { autorun} from 'mobx';

const store = new appleStore();
autorun(()=>
    console.log("autorun test:", store.isPicking)
);

//这样也可以
// let test = autorun(()=>
//     console.log("reaction 1:", store.isPicking)
// );

ReactDOM.render(<AppleBasket store={store} />, document.getElementById('app'));

这样每次store中的isPicking变动的时候都会触发autorun