不变违规:元素类型无效:期望字符串或类/函数但得到:undefined

时间:2016-06-22 16:56:55

标签: reactjs redux redux-form

我正在尝试为我的登录表单实现纯函数,我正在使用redux-form。

我在单元测试中遇到了这个错误:

Invariant Violation: Element type is invalid: expected a string  or a class/function but got: undefined.

这是我要测试的组件:

import { Username } from './presentation/LoginPage.js';
export class LoginPage extends React.Component {
  render() {
    const { error, handleSubmit, pristine, reset, submitting } = this.props;
    return (
      <form onSubmit={handleSubmit}>
        <div>
          <label>Username</label>
          <Field 
            name="username" 
            component={username =>
              <Username username />
          } />
        </div>
      </form>
    );
  }
}

LoginPage.propTypes = {
};

export default reduxForm({
  form: 'login',  // a unique identifier for this form
})(LoginPage);

这是我的纯粹成分:

export const Username = (props) => {
  const { username } = props;
  return (
    <div>
      <input type="text" {...username} placeholder="Username" />
      {username.touched && username.error && <span>{username.error}</span>}
    </div>);
};

当我在浏览器中播放时,我得到reduce is not defined。删除<Field />

后,它可以正常工作

我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:2)

您使用Username组件

进行了奇怪的渲染
<Username username />

以下是

的简短语法
<Username username={true} />   

根据其余代码,这里应该是

<Username username={username} />

答案 1 :(得分:1)

啊我想我在v6和5之间混合Field的语法。字段可用于redux-form v6。