Javascript 将observer转换为ember的辛烷值版本的正确方法是什么?

Javascript 将observer转换为ember的辛烷值版本的正确方法是什么?,javascript,ember.js,ember-cli,ember-octane,Javascript,Ember.js,Ember Cli,Ember Octane,我试图把我所有的余烬成分转换成辛烷值。但我有一个更大的疑问。如何将observer代码转换为辛烷值版本?比如说, parent.hbs <Child @value={{this.value}} /> child.hbs <div>{{this.newUpdate}}</div> child.js export default class ChildComponent extends Component { /** Pr

我试图把我所有的余烬成分转换成辛烷值。但我有一个更大的疑问。如何将
observer
代码转换为辛烷值版本?比如说,

parent.hbs
 
 <Child @value={{this.value}} />

child.hbs

 <div>{{this.newUpdate}}</div>

child.js

  export default class ChildComponent extends Component {     
      /** Previous code: sample code only
        valueUpdate: observer('value', function() {
            this.newValue = this.value / 12 * 2;
        })
      */
  }
parent.hbs
child.hbs
{{this.newUpdate}}
child.js
导出默认类ChildComponent扩展组件{
/**上一个代码:仅示例代码
valueUpdate:observer('value',function(){
this.newValue=this.value/12*2;
})
*/
}
如何将观察者更新为辛烷值?有什么想法吗


注意:我尝试使用'@observer',但它在组件内部不起作用。

Ember Octane在这方面遵循另一种编程模型。您应该使用本机getter来派生状态,而不是在属性发生更改时观察属性并更新另一个属性

从“@glimmer/Component”导入组件;
从'@glimmer/tracking'导入{tracked};
导出默认类ChildComponent扩展组件{
//我假设该值是该组件的本地状态。
//如果是调用时传递给组件的参数。
//您不需要在此处声明,但可以引用
//此.args.value直接位于getter中。
@跟踪值;
获取新值(){
返回该值/12*2;
}
}
只要该值是从跟踪的属性派生的,模板将在每次更改时重新加载。无需像处理计算属性那样使用观察者或显式列出依赖项来手动更新值

传递给组件的参数是自动跟踪的。因此,如果
value
不是一个本地状态,而是作为参数传入,那么它就很简单:

从“@glimmer/Component”导入组件;
导出默认类ChildComponent扩展组件{
获取新值(){
返回this.args.value/12*2;
}
}