Javascript 在react中与redux一起形成

Javascript 在react中与redux一起形成,javascript,forms,reactjs,redux,provider,Javascript,Forms,Reactjs,Redux,Provider,所以我用react和redux制作了一个表单。然而,我不确定我是否完全理解商店和供应商。下面是我的组件的代码。为了便于阅读,我省略了导入 const validate = values => { const errors = {} const requiredFields = [ 'Brukernavn', 'epost', 'rolle' ] requiredFields.forEach(field => { if (!values[

所以我用react和redux制作了一个表单。然而,我不确定我是否完全理解商店和供应商。下面是我的组件的代码。为了便于阅读,我省略了导入

const validate = values => {
  const errors = {}
  const requiredFields = [
    'Brukernavn',
    'epost',
    'rolle'
  ]
  requiredFields.forEach(field => {
    if (!values[field]) {
      errors[field] = 'Required'
    }
  })
  if (
    values.epost &&
    !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(values.epost)
  ) {
    errors.epost = 'Ugyldig E-post!'
  }
  return errors
}

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


const renderRadioGroup = ({ input, ...rest }) => (
  <RadioButtonGroup
    {...input}
    {...rest}
    valueSelected={input.value}
    onChange={(event, value) => input.onChange(value)}
  />
)

const renderSelectField = ({
  input,
  label,
  meta: { touched, error },
  children,
  ...custom
}) => (
  <SelectField
    floatingLabelText={label}
    errorText={touched && error}
    {...input}
    onChange={(event, index, value) => input.onChange(value)}
    children={children}
    {...custom}
  />
)

const MaterialUiForm = props => {
  const { handleSubmit, pristine, reset, submitting } = props
  return (
    <form onSubmit={handleSubmit}>
      <div>
        <Field
          name="brukernavn"
          component={renderTextField}
          label="Brukernavn"
        />
      </div>
      <div>
        <Field name="epost" component={renderTextField} label="E-Post" />
      </div>
      <div>
        <Field name="rolle" component={renderRadioGroup}>
          <RadioButton value="Student" label="Student" />
          <RadioButton value="Helsepersonell" label="Helsepersonell" />
        </Field>
      </div>
        <div>
        <Submitbutton fieldName="Submit" id="submitForSignup" disabled={pristine || submitting} />
      {/*  <Submitbutton type="button" disabled={pristine || submitting} onClick={reset} /> */}
      </div>
    </form>
  )
}

export default reduxForm({
  form: 'MaterialUiForm', // Formens ID
  validate,
})(MaterialUiForm)
const validate=values=>{
常量错误={}
常量必填字段=[
“Brukernavn”,
“epost”,
“罗尔”
]
requiredFields.forEach(字段=>{
如果(!值[字段]){
错误[字段]=“必需”
}
})
如果(
价值观.epost&&
!/^[A-Z0-9.\%+-]+@[A-Z0-9.-]+\[A-Z]{2,4}$/i.test(values.epost)
) {
errors.epost='Ugyldig E-post!'
}
返回错误
}
常量renderTextField=({
输入,
标签,
meta:{触摸,错误},
…习俗
}) => (
)
常量renderRadioGroup=({input,…rest})=>(
input.onChange(值)}
/>
)
常量renderSelectField=({
输入,
标签,
meta:{触摸,错误},
儿童
…习俗
}) => (
input.onChange(值)}
children={children}
{…自定义}
/>
)
常量MaterialUiForm=道具=>{
const{handleSubmit,pristite,reset,submiting}=props
返回(
{/*   */}
)
}
导出默认reduxForm({
表单:'MaterialForm',//表单ID
验证
})(材料状)
现在,我已经发现,如果我用以下内容替换index.js,它就会显示出来,但这对于我项目其余部分的结构并不理想

const rootEl = document.getElementById('root');

ReactDOM.render(
  <Provider store={store}>
    <MuiThemeProvider muiTheme={getMuiTheme()}>
      <div style={{ padding: 15 }}>
        <h2>Velkommen til GloBro!</h2>

        <MaterialUiForm onSubmit={showResults} />
        <Values form="MaterialUiForm" />
      </div>
    </MuiThemeProvider>
  </Provider>,
  rootEl,
);

export default rootEl;
constrootel=document.getElementById('root');
ReactDOM.render(
直到地球!
,
罗特尔,
);
导出默认rootEl;
是否有一种方法可以让我像从我的根应用程序组件调用任何其他组件一样调用此组件,即

class App extends Component {
  render() {
    return (
      <div className="App" style={{display: 'flex', justifyContent: 'left', }}>
        <Login />
      </div>
    );
  }
}
export default App;
类应用程序扩展组件{
render(){
返回(
);
}
}
导出默认应用程序;

只要您的组件是
提供者的后代,您就应该是优秀的组件

ReactDOM.render(
  <Provider store={store}>
    <MuiThemeProvider muiTheme={getMuiTheme()}>
      <App />
    </MuiThemeProvider>
  </Provider>,
  rootEl,
);
ReactDOM.render(
,
罗特尔,
);