Javascript 使用redux表单7将自定义道具传递给组件
我正在使用以下库Javascript 使用redux表单7将自定义道具传递给组件,javascript,reactjs,redux,redux-form,Javascript,Reactjs,Redux,Redux Form,我正在使用以下库 "@material-ui/core": "^3.0.3", "react": "^16.5.0", "redux": "^4.0.0", "redux-form": "^7.4.2", 如何将自定义道具传递到redux表单的组件属性 根据from redux表单,我下面的所有内容都应该可以工作,但它并没有将多行={true}或行={2}道具拉入组件 我不确定它应该如何工作,因为我是javascript的新手。任何帮助都将不胜感激 PostForm.js import Rea
"@material-ui/core": "^3.0.3",
"react": "^16.5.0",
"redux": "^4.0.0",
"redux-form": "^7.4.2",
如何将自定义道具传递到redux表单的组件属性
根据from redux表单,我下面的所有内容都应该可以工作,但它并没有将多行={true}
或行={2}
道具拉入
组件
我不确定它应该如何工作,因为我是javascript的新手。任何帮助都将不胜感激
PostForm.js
import React from 'react'
import { Link, withRouter } from 'react-router-dom';
import { reduxForm, Field } from 'redux-form';
import Button from '@material-ui/core/Button';
import TextField from '@material-ui/core/TextField'
class PostForm extends React.Component {
renderTextField = ({ input,
label,
meta: { error, touched } },
...custom) => {
return (
<TextField
name={label}
label={label}
{...input}
{...custom}
/>
);
};
onSubmit(event) {
event.preventDefault();
const { submitPost, history, formValues } = this.props;
submitPost(formValues.values, history);
}
render() {
<form onSubmit={this.onSubmit.bind(this)}>
<Field
name="title"
component={this.renderTextField}
label="Title"
/>
<Field
name="body"
component={this.renderTextField}
label="Body"
multiline={true}
rows={2}
/>
<div className={classes.buttonContainer}>
<Button to="/posts" component={Link} className={classes.button} color='secondary'>
Cancel
</Button>
<Button type='submit' className={classes.button} color='primary'>
Next
</Button>
</div>
</form>
}
}
export default reduxForm({
validate,
form: 'postForm',
destroyOnUnmount: false
})(PostForm)
从“React”导入React
从“react router dom”导入{Link,withRouter};
从'redux form'导入{reduxForm,Field};
从“@material ui/core/Button”导入按钮;
从“@material ui/core/TextField”导入TextField
类PostForm扩展了React.Component{
renderTextField=({输入,
标签
meta:{错误,触摸}},
…自定义)=>{
返回(
);
};
提交(事件){
event.preventDefault();
const{submitPost,history,formValues}=this.props;
submitPost(formValues.values,历史记录);
}
render(){
取消
下一个
}
}
导出默认reduxForm({
验证
表格:'postForm',
DestroyOnMont:false
})(PostForm)
要呈现多行字段,需要传递多行={true}
(注意驼峰式大小写-这很重要)。这是基于链接的文档,看起来像旧版本。根据较新的文档,似乎多行
都是小写的(为了子孙后代的缘故,把它留在这里)
更新
另外,…custom
位于花括号之外。应该是
renderTextField = ({ input, label, meta: { error, touched } , ...custom })
关于Field
如何传递道具的一点信息-这还不足以涵盖这个答案中的所有内容,但我可以给你一些建议,帮助你开始
是JSX符号。虽然JSX使阅读和编写HTML结构变得容易,但[React实际上不需要JSX][1]
。在内部,它们都编译成纯JS函数(使用React.createElement
和其他工厂函数)
之后,在ES6中引入了passing…custom
等。它们是快捷方式,您也可以在不使用它们的情况下使用React(这意味着您可以只使用ES5语法)。我同意Mrchief。根据文档,多行是。此外,如果直接传递到TextField组件,“多行”属性将起作用。这不是我昨天从文档中复制/粘贴那个小代码块的时候。哦,我明白了。我找到了OP发布的“示例”链接的链接。另外,它通过{…custom}
传递到TextField