javascript - redux 表单元素类型无效:应为字符串(用于内置组件)
问题描述
- 在我的步进代码中,我试图包含单选按钮。
- 当我包含单选按钮时,我收到以下错误。
- 我查看了这个示例https://redux-form.com/6.0.0-alpha.6/examples/simple/然后实施
- 但我仍然面临错误。
- 你能告诉我如何修复它,以便将来我自己修复它。
- 在下面提供我的沙箱和代码片段。
https://codesandbox.io/s/0prxxxvy0n
元素类型无效:应为字符串(用于内置组件)或类/函数(用于复合组件)但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。
const AsyncValidationForm = props => {
console.log("AsyncValidationForm ---->");
const { handleSubmit, pristine, reset, submitting } = props;
return (
<form onSubmit={handleSubmit}>
<Field
name="username"
type="text"
component={renderField}
label="Username"
/>
<Field
name="password"
type="password"
component={renderField}
label="Password"
/>
<Field name="sex" type="radio" value="male" />
<div>
<button type="submit" disabled={submitting}>
Sign Up
</button>
<button type="button" disabled={pristine || submitting} onClick={reset}>
Clear Values
</button>
</div>
</form>
);
};
解决方案
您只需将 renderField 组件添加到您的单选字段:
<Field component={renderField} name="sex" type="radio" value="male" />
为什么它能解决你的问题?您在这里使用的是 redux-form 的 Field 组件。(查看你的导入import { Field, reduxForm } from "redux-form";
)当你不知道你正在集成的组件是如何工作的时,总是希望有一个好的文档。在 redux-form 的情况下,我们很幸运:实际上有一个也描述了他们的 Field 组件。
我们能得到的有以下几点:
名称道具是必需的。它是一个字符串路径,以点和括号表示,对应于表单值中的一个值。它可能像 'firstName' 一样简单,也可能像 contact.billing.address[2].phones[1].areaCode 一样复杂。
组件道具是必需的。它可能是一个组件、一个无状态函数或一个工厂,就像在 React.DOM 下提供的那些。请参阅下面的使用部分。要了解将提供给任何组件的道具,请参阅下面的道具部分。
所有其他道具将传递给组件道具生成的元素。
第二段解释了为什么你的方法没有奏效:组件道具是必需的。:)
来源:https ://redux-form.com/6.0.0-alpha.6/docs/api/field.md/
希望能帮助到你。
推荐阅读
- python - 无法使用这些索引器对 DatetimeIndex 进行位置索引
- c++ - 如何使文本在 wxStaticText 中垂直居中?
- python - 导出 Treeview Tkinter 时 CSV 文件中的数据组织不良
- github - 推送被拒绝,无法编译 Node.js 应用程序。Git Hub 错误
- android - 如何在Android中将mutableMap添加到拦截器
- javascript - 在服务器端渲染的上下文中,“渲染”是什么意思?
- r - 使用 ggplot2 在堆积条形图上的透明层
- datetime - Netsuite 中的 FTL 日期格式
- maven - 如何在 Maven 中找到工件版本的来源?
- reactjs - 抽屉导航器 React Native 中的条件渲染