reactjs - 将文本转换为大写的 Mutator
问题描述
一旦用户在文本字段中输入文本,我尝试了不同的方法来实现 mutator 将文本转换为大写。但还没有成功。埃里克提供的例子似乎是正确的,但也许我遗漏了一些东西。
/** Converts a form value to uppercase **/
const upper = ([name], state, { changeValue }) => {
changeValue(state, name, (value) => value.toUpperCase())
}
<Form
onSubmit={onSubmit}
mutators={{
...arrayMutators,
upper
}}
render={({
handleSubmit,
mutators: { push, pop, upper }, // injected from final-form-arrays above
pristine,
reset,
submitting,
values
}) => {
return (
<form onSubmit={handleSubmit}>
<div>
<label>Company</label>
<Field name="company" component="input" onChange={(e) => upper('company')} />
</div>
</form>
)}
}
/>
调用未定义toUpperCase
的值时会引发错误。value
非常感谢任何帮助!
更新:2018 年 10 月 27 日
我意识到我们也可以使用解析器来解决这个问题:
upper = value => {
return value ? value.toUpperCase() : ''
}
<Field name="company" component="input" parse={this.upper} />
仍在寻找 mutator 如何工作以及我的代码中的错误是什么。
已尝试: 根据现有字段改变状态
解决方案
据我所知,react-final-form 您可以直接获取此数据我会建议您可以使用此代码
onChange={(event, value) => input.onChange(value.toUpperCase())}
推荐阅读
- javascript - 圆形对象的本地存储(socket.io)
- java - 除了 Jackson 之外,还有其他东西可以用 Java 处理复杂的对象吗?
- android - 检查变量时Android Studio调试非常慢(使用Kotlin)
- angularjs - 等待状态数据完成
- firebase - 如何验证由 createCustomToken() 创建的自定义 Firebase 身份验证令牌
- javascript - Angular 6 上下文热键
- robotframework - RobotFrameWork:如何在函数中使用函数?
- java - POST REST API 调用不适用于 Chrome 浏览器,但适用于 IE 浏览器
- php - 是否可以转义这个 str_replace() 以进行路径遍历?
- python - 将包含字节数组的字符串转换为 uint16