- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 react-native 和 formik 的新手,我遇到了我试图建立的这个问题。
如何使用 Formik 在 headerRight 中触发函数?我有 updateCorporation 函数可以触发 api,formik 将完成触发这个函数的工作,在我按下更新按钮后,但结果未定义
我不明白为什么会这样。
文件_1.js
const CorporationContainer = (props) => {
const {
navigation,
} = props;
const updateCorporation = (values) => {
// do patch stuff with values
// but its undefined
};
useEffect(() => {
navigation.setParams({ updateCorporation: updateCorporation.bind() });
}, []);
return (
<Corporation
updateCorporation={updateCorporation} />
);
};
CorporationContainer.navigationOptions = ({ navigation }) => ({
headerRight: (
<EditBtn
onPress={() => navigation.state.params.updateCorporation()}
>
<EditText>Update</EditText>
</EditBtn>
),
});
export default CorporationContainer;
const Corporation = (props) => {
const {
updateCorporation,
} = props;
const emailField = useRef(null);
const validationSchema = yup.object().shape({
email: yup.string()
.ensure()
.email('Email must be valid')
.required('Email'),
});
return (
<Formik
initialValues={{
email,
}}
onSubmit={values => updateCorporation(values)}
validateOnBlur={false}
validateOnChange={false}
validationSchema={validationSchema}
>
{(formProps) => {
const {
errors,
setFieldValue,
values,
} = formProps;
return (
<Container>
<Input
name="email"
placeholder="Email Corporation"
textContentType="emailAddress"
keyboardType="email-address"
returnKeyType="done"
autoCapitalize="none"
autoCorrect={false}
ref={emailField}
value={values.email}
onChangeText={setFieldValue}
editable={!email}
error={errors.email}}
/>
</Container>
);
}}
</Formik>
);
};
export default Corporation;
最佳答案
在 File_1.js 中,我必须使用 withForm
并删除 File_2.js 中的所有 Formik 内容并改用 Prop 。
const CorporationContainer = (props) => {
const {
navigation,
handleSubmit,
errors,
setFieldValue,
values,
} = props;
useEffect(() => {
navigation.setParams({ updateCorporation: handleSubmit.bind() });
}, []);
return (
<ProfileProfessional
errors={errors}
setFieldValue={setFieldValue}
values={values}
/>
);
};
CorporationContainer.navigationOptions = ({ navigation }) => ({
headerRight: (
<EditBtn
onPress={() => navigation.state.params.updateCorporation()}
>
<EditText>Editar</EditText>
</EditBtn>
),
});
export default withFormik({
// ...
})(CorporationContainer);
关于react-native - 如何使用 Formik 在 headerRight 中触发函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675671/
我创建了一个堆栈导航器: import {createStackNavigator} from '@react-navigation/stack'; const TheStack = createSt
我是 react-native 和 formik 的新手,我遇到了我试图建立的这个问题。 如何使用 Formik 在 headerRight 中触发函数?我有 updateCorporation 函数
我仍然试图理解这个 react 导航 5.0。 仅供引用,我正在使用 expo,现在从一页导航到另一页没有问题, 问题是当我为 headerRight 放置导航时。 我将 headerRight 放在
我想知道有没有一种方法可以使用 headerRight onPress 来执行诸如调用 Alert 之类的操作: 我在 MyPet.js 中有一个函数,代码如下: _alert=()=>{ ale
为什么这不起作用?: headerRight: this.props.navigation.navigate('MenuCQ')}/> 按下后,expo 就会崩溃,根本没有错误消息。 onPress
使用react-navigation,发现headerLeft没有响应?而且没有headerLeft,headerRight class Message extends React.Component
我想调用 headerRight 按钮点击屏幕上的函数。我在 useEffect 中将 func 作为参数传递,如下所示。 useEffect(() => { navigation.setPa
我是一名优秀的程序员,十分优秀!