私はトップコンポーネントから状態フラグを渡しました。フラグが真である場合、カスタム妥当性を設定する必要があります。それ以外の場合は、カスタム妥当性をクリアする必要があります。私はこのエラーが発生しています:Reactコンポーネントのカスタム妥当性を設定する方法は?
Unknown prop `setCustomValidity` on <input> tag. Remove this prop from the element.
しかし、この問題はsetCustomValidityがまだReactで認識されていません。
import React from "react";
import BaseField from "./BaseField";
import PropTypes from "prop-types";
const InputField = props => {
const { name, type, isMandatory, onChange, pattern, misMatchEmail } = props;
return (
<BaseField {...props}>
<input
name={name}
pattern={pattern}
type={type}
onChange={onChange}
setCustomValidity={`${misMatchEmail} ? 'Confirm email does not match' : ''`}
onSelect={e => e.preventDefault()}
onCopy={e => e.preventDefault()}
onPaste={e => e.preventDefault()}
onCut={e => e.preventDefault()}
required={isMandatory}
/>
</BaseField>
);
};
InputField.propTypes = {
name: PropTypes.string.isRequired,
type: PropTypes.string.isRequired,
onChange: PropTypes.func.isRequired,
isMandatory: PropTypes.bool.isRequired,
misMatchEmail: PropTypes.bool,
pattern: PropTypes.string
};
export default InputField;
どうすればこの問題を回避できますか?
まずはあなたの? es6のテンプレートリテラル( '')は文字列として扱われ、if-elseとして機能しません。 このように使用します setCustomValidity = {misMatchEmail? '確認メールが一致しません': ''} –