【发布时间】:2023-01-25 15:24:55
【问题描述】:
我有这个简单的组件登录:
function Login() {
const [isFormValidState, setIsFormValidState] = React.useState(false);
const [credentialState, setCredentialState] = React.useState();
function getFormErrors(errors: any, dirty: boolean) {
setIsFormValidState(!Object.keys(errors).length && dirty);
}
function getFormValues(values: any) {
setCredentialState(values);
}
function doAction() {
//credentialState rest call...
}
return (
<View>
<Text>Login</Text>
<UserCredentialForm getFormValues={getFormValues} getFormErrors={getFormErrors}/>
<Button title='Entra' disabled={!isFormValidState} onPress={doAction}/>
</View>
);
}
其中调用 UserCredential Form:
export default function UserCredentialForm({ getFormValues, getFormErrors }) {
[...]
return (
<Formik innerRef={formRef} validationSchema={formSchema} initialValues={state.form} onSubmit={() => { }}>
{({ handleChange, values, touched, errors, dirty }) => {
getFormValues(values);
getFormErrors(errors, dirty);
return <React.Fragment>
// <TextInput/>....
</React.Fragment>
}}
</Formik>
);
[...]
}
在我的应用程序中导航时出现此错误:
React Native 在渲染时无法更新组件登录 不同的组件 Formik。
然后它指出了登录组件中
getFormValues处理程序中setCredentialState中的错误。 我已经使用 ref 而不是状态解决了这个问题,但问题本身对我来说还没有解决。如果我需要在子事件后更新我的父组件视图怎么办?
【问题讨论】:
-
@Stophface 是的,我做到了。这是关于堆栈跟踪的讨论,而不是关于如何解决问题本身的讨论。
标签: javascript reactjs react-native