尝试从验证函数中访问 redux 存储
Trying to access redux store from within validate function
使用 Redux 形式,我 运行 遇到了验证问题。
我想访问存储以在验证中引用一个状态。
我有标准的 redux 表单导出:
function mapStateToProps({address_object}) {
return{
address_object: address_object}
}
export default reduxForm({
form: 'wizard',
destroyOnUnmount: false,
forceUnregisterOnUnmount: true,
validate,
})(
connect(mapStateToProps,mapDispatchToProps)(WizardFormFirstPage)
);
和我的验证函数:
const validate = (values, props) => {
console.log("DEBUG :",props)
... if / else etc
这让我得到了表格的道具
但是我想 运行 验证存储在状态中的东西。类似于:
if (<something in state> === values.<thing>) {
errors.field = "broken"}
控制台记录验证收到的道具,我无法让它看到任何状态。我可以明显地在 WizardFormFirstPage 组件中看到 address_object(因此操作和缩减器工作正常)
我是否需要在组件(与 mapStateToProps 相关联)中声明验证函数才能访问 this.props.whatever?如果是这样的话,如果我从 export reduxForm() 中调用它是否有效?
redux noob - 如果问题很愚蠢,我们深表歉意
你快到了。
连接表单时,在 mapStateToProps
中添加验证所需的状态。
状态将在验证道具中可用:
reduxForm({
form: 'wizard',
validate => (values, { stateForValidation }) => {
if(values.myField === stateForValidation)) {
errors.myField = 'invalid'
}
}
})(connect(
({ stateForValidation }) => ({ stateForValidation })
)(form))
如果有人关心我最终使用
在字段级别处理验证
<Field
validate={this.validateAddress} ...>
然后组件方法:
validateAddress = () => {
errors = {}
// validation stuff
errors._error = "string to display" //use this instead of errors.fieldname = ""
return errors
}
这让我获得了道具。但是@pariesz 上面的回答更好地回答了这个问题。
使用 Redux 形式,我 运行 遇到了验证问题。
我想访问存储以在验证中引用一个状态。
我有标准的 redux 表单导出:
function mapStateToProps({address_object}) {
return{
address_object: address_object}
}
export default reduxForm({
form: 'wizard',
destroyOnUnmount: false,
forceUnregisterOnUnmount: true,
validate,
})(
connect(mapStateToProps,mapDispatchToProps)(WizardFormFirstPage)
);
和我的验证函数:
const validate = (values, props) => {
console.log("DEBUG :",props)
... if / else etc
这让我得到了表格的道具
但是我想 运行 验证存储在状态中的东西。类似于:
if (<something in state> === values.<thing>) {
errors.field = "broken"}
控制台记录验证收到的道具,我无法让它看到任何状态。我可以明显地在 WizardFormFirstPage 组件中看到 address_object(因此操作和缩减器工作正常)
我是否需要在组件(与 mapStateToProps 相关联)中声明验证函数才能访问 this.props.whatever?如果是这样的话,如果我从 export reduxForm() 中调用它是否有效?
redux noob - 如果问题很愚蠢,我们深表歉意
你快到了。
连接表单时,在 mapStateToProps
中添加验证所需的状态。
状态将在验证道具中可用:
reduxForm({
form: 'wizard',
validate => (values, { stateForValidation }) => {
if(values.myField === stateForValidation)) {
errors.myField = 'invalid'
}
}
})(connect(
({ stateForValidation }) => ({ stateForValidation })
)(form))
如果有人关心我最终使用
在字段级别处理验证<Field
validate={this.validateAddress} ...>
然后组件方法:
validateAddress = () => {
errors = {}
// validation stuff
errors._error = "string to display" //use this instead of errors.fieldname = ""
return errors
}
这让我获得了道具。但是@pariesz 上面的回答更好地回答了这个问题。