Ну, проблема в том, что когда вы делаете
{ foo: this.foo }
, вы просто передаете фактическое значение, сохраненное в this.foo , в свойство foo новых объектов, которое равно 0 в момент создания экземпляра и вот как javascript работает с примитивными значениями.
Если вы не хотите использовать вычисляемые свойства или наблюдатели, вы можете использовать объект вместо примитивного значения, которое назначается ссылкой вместо по значению.
Таким образом, вы можете определить свой атрибут foo в объекте данных следующим образом:
foo: {val: 0}
Назначьте ваше значение в addProps следующим образом:
{foo: this.foo}
и увеличьте значение следующим образом: this
setInterval(() => this.foo.val++, 250);
Вот ваш код, измененный с помощью вышеуказанного https://codesandbox.io/s/vue-reactive-object-ybji5
Спасибо,