Javascript 物料ui文本字段与重复表单问题
我遇到了一个我无法处理的问题 我有一个与redux表单兼容的文本字段 像这样: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,
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>
);
};