У меня есть форма Redux Field
с указанной функцией проверки.В этой функции проверки я хочу сослаться на реквизиты из React Component.Примерно так:
interface Props {
// this is passed from the parent component which is linked to the state.payout.balance in redux store
balance: number
}
class ScreenView extends React.PureComponent<
InjectedFormProps<{}, Props> & Props
> {
public render() {
...
<Field
name="payoutInput"
type="text"
component={this.renderFunc}
validate={this.validateFunc}
/>
}
public validateFunc = (value: string, props: any) => {
// I want to reference to the component's props
// props seems to be the Form props
// this.props doesn't have the latest values
// because I linked the initial value to the balance in the store
// so I can see the input is updated once the GET request finishes
// but when the validation is triggered, the balance is 0 which is the default value
// modify the input field will trigger validation with the latest balance in the props
}
}
const ScreenView = reduxForm<{}, Props>({
form: 'PayoutForm',
enableReinitialize: true,
})(ScreenView)
export default connect((state: ReduxState) => {
return {
// this initialValues is used to set the default input value after a get request finish
initialValues: {
payoutInput: String(state.payout.balance),
},
}
})(ScreenView)
Как получить последние реквизиты после повторной инициализации начального значения?
ОБНОВЛЕНИЕ После более глубокого изучения реактотрона, я замечаюсобытия происходят в следующем порядке:
form/INITIALIZE
form/REGISTER_FIELD
validateFunc(value == undefined, this.props.balance == 0)
validateFunc(value == 0, this.props.balance == 0)
API RESPONSE ==> this fetches the balance
form/INITIALIZE
validateFunc(value == newBalance, this.props.balance == 0)
form/UPDATE_SYNC_ERRORS ==> this is weird, the doc says returning undefined means the value is valid and in my logic, when value == newBalance, this.props.balance == 0, it returns undefined
MyOwnCustomAction which is used to change the balance in redux store
Этот тип объясняет, почему я не получаю последний баланс, но не объясняет, почему значение параметра может получить последний баланс.С помощью приведенного ниже кода, если значение параметра является последним балансом, баланс в резервном хранилище должен быть таким же, верно?
initialValues: {
payoutInput: String(state.payout.balance),
},