我想创建一个基于Material UI TextField和Formik的通用组件
我已经处理了剩下的 prop ,但我不知道如何使用value和onChange,
我可以通过使用两个函数来解决这个问题,但我发现必须使用onChangeDefault作为函数并手动执行setFieldValue(),而如果我不修改onChange,它可以自动完成,如果我玩onChange,它会忘记它的默认行为,即setFieldValue()。
onChange={customOnChange || onChangeDefault}
我知道这不可能,但它会像这样
<Field
isUsingCustomOnChange && onChange={customOnChange()}
/>
<Field
as={TextFieldStyled}
label={inputLabel}
name={inputName}
// ------------------------
onChange={
customOnChangeMethod ? customOnChangeMethod : don't do anything as if I didn´t modify the onChange
}
value={
customValue ? customValue : use default value
}
// ------------------------
/>
1条答案
按热度按时间iezvtpos1#
你可以这样做:
所以
customValue
和customOnChange
是可选的,默认为null。只有当你把它们放在组件 prop 中时,它们才会被使用。编辑:
为了使
value
和onCahnge
可选,也可以使用***默认函数参数***。但是您需要小心,因为在调用组件时您可能忘记提供默认和自定义的props,并且您不会看到任何错误,但是您的代码将中断,因为这两个props都是null。
Typescript版本
具有
?
的类型是可选的。