表单

大部分 UI 组件库都包含表单(Form/Field),用于多选项的表单验证等等。由于表单的状态复杂,往往这些组件自身就有一定的状态管理能力,而大部分情况下我们不需要用 vanex 将其全部接管(这样做很麻烦),只需要能够通信即可,这样也会有更好的性能(而不是总是做不必要的同步)。

我们可以用 @vanex 注解提供的 autorun 功能将 model 的改动通过 Form 组件提供的 setValues(大多都提供)功能将状态适时同步到 Form 中,以及在提交的时候将 Form 的状态传递给 Model 即可。

与表单交互

import { vanex } from 'vanex';
// @vanex 注解第二个参数列表可以是要注册为 AutoRun 的方法,他们会自动收集依赖
// 当 AutoRun 方法的依赖(demo 中的 this.demoModel.form)发生改变时就会被调用
@vanex('demoModel')('autoSyncForm')
class Demo extends React.Component {
  constructor(props) {
    super(props);
    this.field = new Field(this);
  }

  autoSyncForm() {
      // 因为访问了 demoModel.form 所以会被自动收集为依赖
    if (this.demoModel.form) {
      this.field.setValues(this.demoModel.form);
    }
  }
  // ... more
}

然后我们在另外一个组件中(或者 Model 本身中)只需要改变 demoModel.form 的值就会自动同步到 Form 表单中。

详细的例子见:

results matching ""

    No results matching ""