鉴于没有太多关于此的示例,我会尽可能地关注文档,但验证不是被动的。
我声明了一个模式:
import { Tracker } from 'meteor/tracker';
import SimpleSchema from 'simpl-schema';
export const modelSchema = new SimpleSchema({
foo: {
type: String,
custom() {
setTimeout(() => {
this.addValidationErrors([{ name: 'foo', type: 'notUnique' }]);
}, 100); // simulate async
return false;
}
}
}, {
tracker: Tracker
});
然后我在我的组件中使用这个模式:
export default class InventoryItemForm extends TrackerReact(Component) {
constructor(props) {
super(props);
this.validation = modelSchema.newContext();
this.state = {
isValid: this.validation.isValid()
};
}
...
render() {
...
const errors = this.validation._validationErrors;
return (
...
)
}
}
因此,每当我尝试 validate 时foo
,都会调用异步的自定义函数,并调用正确的函数,但是当应该为 falseaddValidationErrors
时,组件永远不会重新渲染。this.validation.isValid()
我错过了什么?