redux-form永远不会为react本机app调用验证

时间:2018-05-17 18:13:18

标签: react-native redux redux-form

我完全希望通过&#34来解决这个问题;看,你在那里忘记了一个逗号"或者傻事,但我真的看不到它。我已经将问题解决了只有一种redux形式的基本反应本机应用程序。

import React from 'react'
import { createStore, applyMiddleware } from 'redux'
import logger from 'redux-logger'
import { Provider } from 'react-redux'
import { Text, View, TextInput, Button } from 'react-native'
import { combineReducers } from 'redux'
import { reducer as formReducer, Field } from 'redux-form'
import { reduxForm } from 'redux-form'

const rootReducer = combineReducers({ forms: formReducer })
const store = createStore(rootReducer, {}, applyMiddleware(logger))

const validate = (values) => {
  const errors = {}
  if (!values.name) errors.name = 'Required'
  if (!values.email) errors.email = 'Required'
  return errors
}

const renderInput = ({ input: { onChange, ...restInput } }) => {
  return <TextInput onChangeText={onChange} {...restInput} />
}

class MyForm extends React.Component {
  submit = (values) => console.log('Submitting ', values)

  render() {
    const { handleSubmit } = this.props
    return (
      <View style={{ padding: 20 }}>
        <Text>Please fill in this form:</Text>
        <Field name='name' component={renderInput} />
        <Field name='email' component={renderInput} />
        <Button title='Go' onPress={handleSubmit(this.submit)} />
      </View>
    )
  }
}

const MyConnectedForm = reduxForm({
  form: 'myform',
  validate
})(MyForm)

export default class App extends React.Component {
  render() {
    return (
      <Provider store={store}>
        <MyConnectedForm />
      </Provider>
    )
  }
}

我可以看到事件:

@@ Redux的形式/ CHANGE @@终极版型/ BLUR

正在被触发,并且表单的redux状态发生了变化。然而,验证仅在第一次渲染时被调用一次,而不再被调用。此外,当我按下按钮时,将使用空对象调用提交函数,而不是像我期望的那样调用表单的值。

使用的版本:

  • redux:3.7.2
  • redux-form:7.3.0
  • react:16.3.1
  • react-native:0.55.4

1 个答案:

答案 0 :(得分:0)

几乎和错误的逗号一样糟糕。我使用了密钥,表单,然后是表单