Create custom style Material UI with redux-form





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















When creating custom styling with Material UI + redux-form, the Field element from redux-form does not apply the custom class names. When simply using FieldText from Material UI does. I have commented out the non-functioning line of code below.



The custom styles object is being applied the the react component via a prop named 'classes' that is defined on the prototype.



import React, {Component} from 'react';
import classNames from 'classnames';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import TextField from '@material-ui/core/TextField';
import { Field, reduxForm } from 'redux-form';
import { connect } from 'react-redux';
import {createOrder} from '../actions';

const styles = theme => ({
root: {
display: 'flex',
flexWrap: 'wrap',
justifyContent: 'center'
},
margin: {
margin: theme.spacing.unit,
},
textField: {
flexBasis: 400,
},
button: {
margin: theme.spacing.unit,
},
input: {
display: 'none',
},
});


class Order extends Component {

renderField(field) {
return (
<div>
<TextField
id="outlined-simple-start-adornment"
// className={classNames(classes.margin, classes.textField)}
variant="outlined"
label="Age"

{...field.input}
/>

</div>
)
}

render() {
const { classes } = this.props;
return (
<form >
<div className={classes.root}>
<Field
name="age"
label="age"
component={this.renderField}
/>
<TextField
id="outlined-simple-start-adornment"
className={classNames(classes.margin, classes.textField)}
variant="outlined"
label="Company Name"
/>
</div>
</form>
);
}
}

Order.propTypes = {
classes: PropTypes.object.isRequired,
};



export default reduxForm({
form: 'Form'
})(
connect(null, {createOrder})(withStyles(styles)(Order))
);









share|improve this question





























    1















    When creating custom styling with Material UI + redux-form, the Field element from redux-form does not apply the custom class names. When simply using FieldText from Material UI does. I have commented out the non-functioning line of code below.



    The custom styles object is being applied the the react component via a prop named 'classes' that is defined on the prototype.



    import React, {Component} from 'react';
    import classNames from 'classnames';
    import PropTypes from 'prop-types';
    import { withStyles } from '@material-ui/core/styles';
    import TextField from '@material-ui/core/TextField';
    import { Field, reduxForm } from 'redux-form';
    import { connect } from 'react-redux';
    import {createOrder} from '../actions';

    const styles = theme => ({
    root: {
    display: 'flex',
    flexWrap: 'wrap',
    justifyContent: 'center'
    },
    margin: {
    margin: theme.spacing.unit,
    },
    textField: {
    flexBasis: 400,
    },
    button: {
    margin: theme.spacing.unit,
    },
    input: {
    display: 'none',
    },
    });


    class Order extends Component {

    renderField(field) {
    return (
    <div>
    <TextField
    id="outlined-simple-start-adornment"
    // className={classNames(classes.margin, classes.textField)}
    variant="outlined"
    label="Age"

    {...field.input}
    />

    </div>
    )
    }

    render() {
    const { classes } = this.props;
    return (
    <form >
    <div className={classes.root}>
    <Field
    name="age"
    label="age"
    component={this.renderField}
    />
    <TextField
    id="outlined-simple-start-adornment"
    className={classNames(classes.margin, classes.textField)}
    variant="outlined"
    label="Company Name"
    />
    </div>
    </form>
    );
    }
    }

    Order.propTypes = {
    classes: PropTypes.object.isRequired,
    };



    export default reduxForm({
    form: 'Form'
    })(
    connect(null, {createOrder})(withStyles(styles)(Order))
    );









    share|improve this question

























      1












      1








      1








      When creating custom styling with Material UI + redux-form, the Field element from redux-form does not apply the custom class names. When simply using FieldText from Material UI does. I have commented out the non-functioning line of code below.



      The custom styles object is being applied the the react component via a prop named 'classes' that is defined on the prototype.



      import React, {Component} from 'react';
      import classNames from 'classnames';
      import PropTypes from 'prop-types';
      import { withStyles } from '@material-ui/core/styles';
      import TextField from '@material-ui/core/TextField';
      import { Field, reduxForm } from 'redux-form';
      import { connect } from 'react-redux';
      import {createOrder} from '../actions';

      const styles = theme => ({
      root: {
      display: 'flex',
      flexWrap: 'wrap',
      justifyContent: 'center'
      },
      margin: {
      margin: theme.spacing.unit,
      },
      textField: {
      flexBasis: 400,
      },
      button: {
      margin: theme.spacing.unit,
      },
      input: {
      display: 'none',
      },
      });


      class Order extends Component {

      renderField(field) {
      return (
      <div>
      <TextField
      id="outlined-simple-start-adornment"
      // className={classNames(classes.margin, classes.textField)}
      variant="outlined"
      label="Age"

      {...field.input}
      />

      </div>
      )
      }

      render() {
      const { classes } = this.props;
      return (
      <form >
      <div className={classes.root}>
      <Field
      name="age"
      label="age"
      component={this.renderField}
      />
      <TextField
      id="outlined-simple-start-adornment"
      className={classNames(classes.margin, classes.textField)}
      variant="outlined"
      label="Company Name"
      />
      </div>
      </form>
      );
      }
      }

      Order.propTypes = {
      classes: PropTypes.object.isRequired,
      };



      export default reduxForm({
      form: 'Form'
      })(
      connect(null, {createOrder})(withStyles(styles)(Order))
      );









      share|improve this question














      When creating custom styling with Material UI + redux-form, the Field element from redux-form does not apply the custom class names. When simply using FieldText from Material UI does. I have commented out the non-functioning line of code below.



      The custom styles object is being applied the the react component via a prop named 'classes' that is defined on the prototype.



      import React, {Component} from 'react';
      import classNames from 'classnames';
      import PropTypes from 'prop-types';
      import { withStyles } from '@material-ui/core/styles';
      import TextField from '@material-ui/core/TextField';
      import { Field, reduxForm } from 'redux-form';
      import { connect } from 'react-redux';
      import {createOrder} from '../actions';

      const styles = theme => ({
      root: {
      display: 'flex',
      flexWrap: 'wrap',
      justifyContent: 'center'
      },
      margin: {
      margin: theme.spacing.unit,
      },
      textField: {
      flexBasis: 400,
      },
      button: {
      margin: theme.spacing.unit,
      },
      input: {
      display: 'none',
      },
      });


      class Order extends Component {

      renderField(field) {
      return (
      <div>
      <TextField
      id="outlined-simple-start-adornment"
      // className={classNames(classes.margin, classes.textField)}
      variant="outlined"
      label="Age"

      {...field.input}
      />

      </div>
      )
      }

      render() {
      const { classes } = this.props;
      return (
      <form >
      <div className={classes.root}>
      <Field
      name="age"
      label="age"
      component={this.renderField}
      />
      <TextField
      id="outlined-simple-start-adornment"
      className={classNames(classes.margin, classes.textField)}
      variant="outlined"
      label="Company Name"
      />
      </div>
      </form>
      );
      }
      }

      Order.propTypes = {
      classes: PropTypes.object.isRequired,
      };



      export default reduxForm({
      form: 'Form'
      })(
      connect(null, {createOrder})(withStyles(styles)(Order))
      );






      reactjs material-ui mobx-react-form






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 22 '18 at 8:32









      angelicaangelica

      153




      153
























          2 Answers
          2






          active

          oldest

          votes


















          0














          Because classes is undefined, you can access classes from props.



          like this.



          className={classNames(this.props.classes.margin, this.props.classes.textField)}


          TextField should be like this.



          <TextField
          id="outlined-simple-start-adornment"
          className={classNames(this.props.classes.margin, this.props.classes.textField)}
          variant="outlined"
          label="Age"
          {...field.input}
          />





          share|improve this answer


























          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27



















          0














          I think you have defined const { classes } = this.props; in render() but it is not accesible inside renderField(field){...} due to its scope.



          You can not destructure props for whole component.
          Destructuring can only assign local variables so you'd need to destructure props in each function. Otherwise there's nothing wrong with having to write this.props.value.



          So here you have two alternatives



          1] pass props to renderField() or again destructure const { classes } = this.props inside renderField()



          2] Directly use this.props.classes instead of just classes in renderField()






          share|improve this answer
























          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27











          • Can you post your code so that I can see where you are getting an error

            – Pushpanjali
            Dec 3 '18 at 12:53












          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53426732%2fcreate-custom-style-material-ui-with-redux-form%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          Because classes is undefined, you can access classes from props.



          like this.



          className={classNames(this.props.classes.margin, this.props.classes.textField)}


          TextField should be like this.



          <TextField
          id="outlined-simple-start-adornment"
          className={classNames(this.props.classes.margin, this.props.classes.textField)}
          variant="outlined"
          label="Age"
          {...field.input}
          />





          share|improve this answer


























          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27
















          0














          Because classes is undefined, you can access classes from props.



          like this.



          className={classNames(this.props.classes.margin, this.props.classes.textField)}


          TextField should be like this.



          <TextField
          id="outlined-simple-start-adornment"
          className={classNames(this.props.classes.margin, this.props.classes.textField)}
          variant="outlined"
          label="Age"
          {...field.input}
          />





          share|improve this answer


























          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27














          0












          0








          0







          Because classes is undefined, you can access classes from props.



          like this.



          className={classNames(this.props.classes.margin, this.props.classes.textField)}


          TextField should be like this.



          <TextField
          id="outlined-simple-start-adornment"
          className={classNames(this.props.classes.margin, this.props.classes.textField)}
          variant="outlined"
          label="Age"
          {...field.input}
          />





          share|improve this answer















          Because classes is undefined, you can access classes from props.



          like this.



          className={classNames(this.props.classes.margin, this.props.classes.textField)}


          TextField should be like this.



          <TextField
          id="outlined-simple-start-adornment"
          className={classNames(this.props.classes.margin, this.props.classes.textField)}
          variant="outlined"
          label="Age"
          {...field.input}
          />






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 22 '18 at 9:15

























          answered Nov 22 '18 at 9:03









          Amruth LSAmruth LS

          3,0231727




          3,0231727













          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27



















          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27

















          I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

          – angelica
          Nov 23 '18 at 2:27





          I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

          – angelica
          Nov 23 '18 at 2:27













          0














          I think you have defined const { classes } = this.props; in render() but it is not accesible inside renderField(field){...} due to its scope.



          You can not destructure props for whole component.
          Destructuring can only assign local variables so you'd need to destructure props in each function. Otherwise there's nothing wrong with having to write this.props.value.



          So here you have two alternatives



          1] pass props to renderField() or again destructure const { classes } = this.props inside renderField()



          2] Directly use this.props.classes instead of just classes in renderField()






          share|improve this answer
























          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27











          • Can you post your code so that I can see where you are getting an error

            – Pushpanjali
            Dec 3 '18 at 12:53
















          0














          I think you have defined const { classes } = this.props; in render() but it is not accesible inside renderField(field){...} due to its scope.



          You can not destructure props for whole component.
          Destructuring can only assign local variables so you'd need to destructure props in each function. Otherwise there's nothing wrong with having to write this.props.value.



          So here you have two alternatives



          1] pass props to renderField() or again destructure const { classes } = this.props inside renderField()



          2] Directly use this.props.classes instead of just classes in renderField()






          share|improve this answer
























          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27











          • Can you post your code so that I can see where you are getting an error

            – Pushpanjali
            Dec 3 '18 at 12:53














          0












          0








          0







          I think you have defined const { classes } = this.props; in render() but it is not accesible inside renderField(field){...} due to its scope.



          You can not destructure props for whole component.
          Destructuring can only assign local variables so you'd need to destructure props in each function. Otherwise there's nothing wrong with having to write this.props.value.



          So here you have two alternatives



          1] pass props to renderField() or again destructure const { classes } = this.props inside renderField()



          2] Directly use this.props.classes instead of just classes in renderField()






          share|improve this answer













          I think you have defined const { classes } = this.props; in render() but it is not accesible inside renderField(field){...} due to its scope.



          You can not destructure props for whole component.
          Destructuring can only assign local variables so you'd need to destructure props in each function. Otherwise there's nothing wrong with having to write this.props.value.



          So here you have two alternatives



          1] pass props to renderField() or again destructure const { classes } = this.props inside renderField()



          2] Directly use this.props.classes instead of just classes in renderField()







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 22 '18 at 9:44









          PushpanjaliPushpanjali

          113




          113













          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27











          • Can you post your code so that I can see where you are getting an error

            – Pushpanjali
            Dec 3 '18 at 12:53



















          • I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

            – angelica
            Nov 23 '18 at 2:27











          • Can you post your code so that I can see where you are getting an error

            – Pushpanjali
            Dec 3 '18 at 12:53

















          I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

          – angelica
          Nov 23 '18 at 2:27





          I was playing around with that as well -- but received a "TypeError: Cannot read property 'props' of undefined" when I define classes in the local scope. Could this need componentDidMount? Or is it something with redux-form?

          – angelica
          Nov 23 '18 at 2:27













          Can you post your code so that I can see where you are getting an error

          – Pushpanjali
          Dec 3 '18 at 12:53





          Can you post your code so that I can see where you are getting an error

          – Pushpanjali
          Dec 3 '18 at 12:53


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53426732%2fcreate-custom-style-material-ui-with-redux-form%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Guess what letter conforming each word

          Port of Spain

          Run scheduled task as local user group (not BUILTIN)