Javascript 物料ui文本字段与重复表单问题

Javascript 物料ui文本字段与重复表单问题,javascript,reactjs,redux,material-ui,redux-form,Javascript,Reactjs,Redux,Material Ui,Redux Form,我遇到了一个我无法处理的问题 我有一个与redux表单兼容的文本字段 像这样: const renderTextField = props => ( <TextField {...props} /> ); 但是当我写值并提交表单时,表单没有值。我错过了什么 根据dicumentation,我使用了以下内容: const renderTextField = ({ input,

我遇到了一个我无法处理的问题 我有一个与redux表单兼容的文本字段 像这样:

const renderTextField = props => (
  <TextField {...props} />
);
但是当我写值并提交表单时,表单没有值。我错过了什么

根据dicumentation,我使用了以下内容:

const renderTextField = ({
                           input,
                           label,
                           meta: { touched, error },
                           ...custom
                         }) =>
  <TextField
    hintText={label}
    floatingLabelText={label}
    errorText={touched && error}
    {...input}
    {...custom}
  />

const SearchDefaultView = (props) => {
  const { requestCustomerInfo, handleSubmit } = props;
  return (
    <form onSubmit={handleSubmit(requestCustomerInfo)}>
      <Menu
        autoWidth={false}
        style={styleSearchMenu}
      >
        <Divider />
        <Field
          id="searchCif"
          name="searchCif"
          component={renderTextField}
          floatingLabelText={SEARCHVIEW_HINT_CIF}
          floatingLabelFixed={false}
        />
        <br />
        <Field
          id="searchAFM"
          name="searchAFM"
          component={renderTextField}
          floatingLabelText={SEARCHVIEW_HINT_AFM}
          floatingLabelFixed={false}
        />
        <br />
        <RaisedButton
          type="submit"
          fullWidth
          primary
          label={SEARCHVIEW_SEARCH}
        />
      </Menu>
    </form>
  );
};
const renderTextField=({
输入,
标签,
meta:{触摸,错误},
…习俗
}) =>
const SearchDefaultView=(道具)=>{
const{requestCustomerInfo,handleSubmit}=props;
返回(


); };

但是它向我显示了在编译时的一个错误…custom

我认为您没有使用组件的onChange属性

onChange:当textfield的值更改时触发的回调函数

您应该分派更改并更新redux容器中的数据


当您想为Redux表单使用自定义字段时,Redux表单允许您访问两个道具,如
onChange
等,以及其他元数据(如表单是否被触摸)。这些不同类型的道具根据类型进行分组。您感兴趣的是,与普通输入元素相关联的所有属性(如
onChange
value
type
)都分组在
props.input
中。因此,要将它们传递给
组件,您不能直接在
道具上使用扩展运算符(
..
)。您必须在
道具上使用它。输入

const renderTextField=props=>(
);
您可能还必须处理这样一个事实,即
期望的
onChange
方法不一定与Redux表单提供的
onChange
方法具有相同的签名。所以你可能需要做一些手工工作,让他们一起工作,就像我所做的一样。您必须分别阅读Redux表单的
onChange
和materialui文本字段的文档


您可能还想知道,对于
材质ui
组件,实际上已经存在一个。

非常感谢您的反馈,但erikras在其材质ui文档中没有使用props.input。看起来我的状态并没有从我所看到的更新,他确实更新了。请参阅链接。他分解了方法参数的结构,挑选出输入部分并将其展开。renderTextfield未编译。它粉碎了…习俗。你可以自己检查什么代码没有编译?我例子中的那个?文档中的那个?您可能需要使用当前代码更新问题。你目前的情况太不清楚了。我用文档中的那个编辑了renderTextField,但它没有编译。value属性是错误的。删除它或将其附加到reduxI中的变量无法理解您所说的内容。该值由redux表单自动附加。这就是使用itValue的情况,即使您正在从redux传递上面的道具,它也不会被赋值。
import { reduxForm } from 'redux-form/immutable';
import { connect } from 'react-redux';
// import { injectIntl } from 'react-intl';
import SearchDefaultView from './views/searchDefaultView';

import { requestCustomerInfo } from './actions/customerActions';

export const mapDispatchToProps = dispatch => (
  {
    requestCustomerInfo: formData =>
      dispatch(requestCustomerInfo(formData))
  }
);

const SearchDefaultReduxForm = reduxForm({
  form: 'customerInfo',  // a unique identifier for this form
})(SearchDefaultView);

const SearchDefaultContainer = connect(
  null,
  mapDispatchToProps
)(SearchDefaultReduxForm);

export default SearchDefaultContainer;
const renderTextField = ({
                           input,
                           label,
                           meta: { touched, error },
                           ...custom
                         }) =>
  <TextField
    hintText={label}
    floatingLabelText={label}
    errorText={touched && error}
    {...input}
    {...custom}
  />

const SearchDefaultView = (props) => {
  const { requestCustomerInfo, handleSubmit } = props;
  return (
    <form onSubmit={handleSubmit(requestCustomerInfo)}>
      <Menu
        autoWidth={false}
        style={styleSearchMenu}
      >
        <Divider />
        <Field
          id="searchCif"
          name="searchCif"
          component={renderTextField}
          floatingLabelText={SEARCHVIEW_HINT_CIF}
          floatingLabelFixed={false}
        />
        <br />
        <Field
          id="searchAFM"
          name="searchAFM"
          component={renderTextField}
          floatingLabelText={SEARCHVIEW_HINT_AFM}
          floatingLabelFixed={false}
        />
        <br />
        <RaisedButton
          type="submit"
          fullWidth
          primary
          label={SEARCHVIEW_SEARCH}
        />
      </Menu>
    </form>
  );
};