나는 반응하는 네이티브 응용 프로그램을 빌드하고 등록 양식에 Redux 양식을 사용하고 있습니다. 현재 양식이 있고 성공하면 다음 페이지로 이동하고 싶습니다. 필자는 코드에서 redux-form의 onSubmitSuccess 함수를 사용하고 있는데 다음 페이지로 이동하기 위해 소품을 사용해야하지만 onSubmitSuccess에서 소품을 사용하려고하면 "소품이 정의되지 않았습니다."라고 알려줍니다. redux 형식의 v6.5.0에서는 onSubmitSuccess에 소품을 전달할 수 있지만 정확하게 수행하는 방법은 확실하지 않습니다. 이것에 대한 문서입니다 : https://github.com/erikras/redux-form/blob/master/docs/api/ReduxForm.md#onsubmitsuccess--function-optional 아래어떻게 Redux Form의 onSubmitSuccess 콜백에 props를 전달합니까?
내 코드의 조각입니다 :
render() {
const {handleSubmit, touched, error} = this.props
const onSubmit = (values, dispatch) => {
this.props.addFirstName(values.firstName)
this.props.addLastName(values.lastName)
this.props.addEmailAddress(values.emailAddress)
this.props.addPassword(values.password)
}
return (
<Container>
<View theme={theme}>
<Image source={require('../../../images/BG-signUp.png')} style={styles.background} >
<Content padder scrollEnabled={false}>
<Text style={styles.signupHeader}>
CREATE ACCOUNT
</Text>
<View style={styles.signupContainer}>
<Field name = "firstName" component = {renderFirstName} />
<Field name = "lastName" component = {renderLastName} />
<Field name = "emailAddress" component = {renderEmailAddress} />
<Field name = "password" component = {renderPassword} />
<Field name = "confirmPassword" component = {renderConfirmPassword} />
<Button
rounded transparent block
onPress={handleSubmit(onSubmit)}
style={styles.signupBtn}
>
Continue
</Button>
<TouchableOpacity>
<Text style={styles.termsText}>Terms & Conditions</Text>
</TouchableOpacity>
</View>
</Content>
</Image>
</View>
</Container>
)
}
function bindAction(dispatch) {
return {
addFirstName: (firstName) => dispatch(addFirstName(firstName)),
addLastName: (lastName) => dispatch(addLastName(lastName)),
addEmailAddress: (emailAddress) => dispatch(addEmailAddress(emailAddress)),
addPassword: (password) => dispatch(addPassword(password)),
reset: key => dispatch(reset([{ key: 'orgPage' }], key, 0)),
};
}
const mapStateToProps = state => ({
navigation: state.cardNavigation,
credentials: state.credentials
});
/*export default connect(mapStateToProps, bindAction)(SignUp);*/
SignUp = reduxForm({
form: 'signup',
validate,
onSubmitSuccess:() => {
this.props.reset(this.props.navigation.key)
}
})(SignUp);
SignUp = connect(mapStateToProps, bindAction)(SignUp);
감사합니다. 오류가 없으므로 이제 화면이 다음 페이지로 이동하지는 않지만 내 코드가 잘못된 것 같습니다. – kjwade3
참고로, 'bind-action'함수는'react-redux'에 내장되어 있습니다. 다음과 같이 말할 수 있습니다 : 'SignUp = connect (mapStateToProps, {addFirstName, addLastName, addEmailAddress, addPassword})'와 연결하면 현재 수동으로 수행하고있는 것처럼 자동 바인딩됩니다. –