現在のプラットフォーム:NodeJS(最小)、クライアント側React w/Redux、Formik、Yup。
次のサンプルコードが与えられた場合(Reactコンポーネントコードは質問に関係ないため、コンポーネントコードは含まれません):
class RegisterPage extends React.Component {
constructor(props) {
super(props);
}
// (...)
render () {
<Form>
<Field name="email" type="email" />
<Field name="password" type="password" />
<Field
name="myCheckbox"
type="checkbox"
checked={this.props.values.myCheckbox}
onChange={ ?????????? } />
</Form>
}
}
const handleFormSubmission = (values, { resetForm, setErrors, setSubmitting }) => {
console.log(values);
};
const handleFormChange = (event) => {
event.persist();
console.log('changed');
};
const MyFormik = withFormik({
mapPropsToValues ({ email, password, myCheckbox }) {
return {
email: email || '',
password: password || '',
myCheckbox: myCheckbox || false
}
},
validationSchema: (...Yup schema here...),
handleSubmit (values, bag) { return handleFormSubmission(values, bag); }
})(RegisterPage);
export default connect()(MyFormik);
...handleChangeメソッドの使用方法?そのチェックボックスの変更を処理するコードを追加しながら、元のもの(Formikのもの)を保持する必要があります。そのチェックボックスのチェック値に依存するコンポーネントの動作がいくつかあります。
OnChangeプロパティを電子メールまたはパスワードに渡していないことに注意してください。これらのコードに追加の動作はありません。チェックボックスは、特別な動作を行うものです。
チェックボックスのハンドラーを宣言して使用できます! Formkitのネイティブハンドラーとカスタムハンドラーを使用します。
class RegisterPage extends React.Component {
constructor(props) {
super(props);
}
// (...)
handleCheckBox: (e) => {
// do whatever you want to the value
}
render () {
<Form>
<Field name="email" type="email" />
<Field name="password" type="password" />
<Field
name="myCheckbox"
type="checkbox"
checked={this.props.values.myCheckbox}
onChange={(e) => {this.props.handleChange(e); this.handleCheckBox(e)}} />
</Form>
}
}