我正在使用React Redux Starter Kit,并试图在组件/容器中组织我的代码,并努力寻找合适的过程。我意识到这是一个松散的线条,但喜欢一些关于如何更好地组织事物的输入。在组件/容器中组织React应用程序
目前我有3个文件 - CheckoutForm(一个redux表单),CheckoutView(一个简单的页面,具有表单)和CheckoutContainer,它现在几乎没有任何东西。在阅读关于组件/容器分离的建议之后,看起来CheckoutView应该是相同的,但是我也许应该将提交功能从它中提取出来并放到CheckoutContainer中?如何将我最好的重新连接验证码:
CheckoutContainer.js
import Checkout from '../components/CheckoutView'
export default Checkout
CheckoutView.js
import React from 'react'
import classes from './CheckoutView.scss'
import CheckoutForm from '../forms/CheckoutForm'
const submit = require('../modules/submit').default
export const CheckoutView =() => (
<div>
<h4 className={classes.header}>Checkout</h4>
<CheckoutForm onSubmit={submit}/>
</div>
)
export default CheckoutView
CheckoutForm.js
import { Field, reduxForm } from 'redux-form'
const renderField = ({ input, label, type, meta: { touched, error } }) => (
<div>
<label>{label}</label>
<div>
<input {...input} placeholder={label} type={type}/>
{touched && error && <span>{error}</span>}
</div>
</div>
)
const CheckoutForm = (props) => {
const { error, handleSubmit, pristine, reset, submitting } = props
return (
<form onSubmit={handleSubmit}>
<Field name="username" type="text" component={renderField} label="Username"/>
<Field name="password" type="password" component={renderField} label="Password"/>
{error && <strong>{error}</strong>}
<div>
<button type="submit" disabled={submitting}>Log In</button>
<button type="button" disabled={pristine || submitting} onClick={reset}>Clear Values</button>
</div>
</form>
)
}
export default reduxForm({
form: 'checkoutForm'
})(CheckoutForm)
谢谢。所以我已经拿出了容器里的Redux线。但是,即使我不需要为该路线中的其他事物进行还原,这是推荐道具的道具吗? – cyberwombat
如果你在本书中做了些什么,那''/ modules/submit'函数应该是一个动作。这是推荐的方式,但是,您愿意将Redux集成到您的开发中的是您的决定。 –
为什么我会在CheckoutView第5行中看到一个错误:“ReferenceError:Can not find variable:React”? – cyberwombat