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