откуда mobx знает, к какому компоненту переменных привязан? - PullRequest
0 голосов
/ 12 июня 2018

Я знаю, что MobX может обнаружить, когда изменяется свойство объекта (в нашем случае myData.name), но как MobX узнает, что User компонент зависит от myData.name?

class MyData {
    @observable name = "John"
}

@observer
class User extends Component {      
    render() {
        // here, User depends on myData.name, but how MobX know??
        let { name } = this.props.myData;
        return <div>{name}</div>
    }
}

let myData = new MyData();
ReactDOM.render(<User myData={myData} />, document.getElementById('root'));

// this triggers User component to refresh, but how does MobX know User
// component depends on MyData.user?
setTimeout(function(){
    myData.name = "Peter";
}, 2000)

1 Ответ

0 голосов
/ 14 июня 2018

Функция render () пользователя имеет особое значение для mobx, потому что вы добавили пользователя в качестве наблюдателя (с помощью @observer).Как mobx docs скажем ....

"MobX реагирует на любое существующее наблюдаемое свойство, которое читается во время выполнения отслеживаемая функция . "

  • " чтение "- это разыменование свойства объекта, которое может быть выполнено через" расставление точек "в нем (например, user.name) или использование скобкинотация (например, user ['name']).

  • "отслеживаемые функции" - это выражение вычисляемых, метод render () компонента-наблюдателя и передаваемые функциив качестве первого параметра для when, response и autorun.

  • «в течение» означает, что отслеживаются только те наблюдаемые, которые читаются во время выполнения функции.Не имеет значения, используются ли эти значения прямо или косвенно отслеживаемой функцией
    .

...