これに関する例はあまりないため、できる限りドキュメントに従っていますが、検証は反応的ではありません。
スキーマを宣言します:
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 (
...
)
}
}
そのため、検証を試みるたびにfoo
、非同期のカスタム関数が呼び出され、適切な関数が呼び出されますが、が false であると想定されているaddValidationErrors
場合、コンポーネントは再レンダリングされません。this.validation.isValid()
私は何が欠けていますか?