gpt4 book ai didi

reactjs - Formik 使用 React Native Switch

转载 作者:行者123 更新时间:2023-12-04 16:10:04 25 4
gpt4 key购买 nike

我的目标是使用基于 Switch 的自定义组件(来自 React Native)Formik 形式。下面是表单组件的代码:

class NewPreferences extends React.Component {
render() {
return(
<View style={styles.mainContainer}>
<View style={styles.newPreferencesContainer}>
<Formik
initialValues={{
food: true
}}
onSubmit={async (values, action) => {
await this.props.onSubmitPress(values)
action.setSubmitting(false)
}}
render={({
values,
errors,
touched,
handleChange,
handleBlur,
handleSubmit,
isSubmitting,
}) => (
<View style={styles.formikNewPreferences}>
<View style={styles.itemRow}>
<Field
source={images.food.uri}
onChange={handleChange('food')}
value={values.food}
name="food"
component={ToggleButton}
/>

</View>
<TouchableOpacity
style={styles.button}
onPress={handleSubmit}
disabled={isSubmitting}
>
<Text>Login</Text>
</TouchableOpacity>
</View>
)}
/>
</View>
</View>
);
}

组件 ToggleButton是以下一个:
class ToggleButton extends React.Component<ToggleButtonInterface> {
render() {
return(
<View>
<Image
source={this.props.source}
/>
<Switch
onValueChange={this.props.onChange}
value={this.props.value}
/>
</View>

);
}

}

似乎切换 Switch 元素会引发错误: undefined is not an object (evaluating '_a.type') , 在方法 _handleChangeSwitch .按照Formik的文档,我想我只需要通过Formik的 handleChange在我的自定义组件的 props 中,这样当 Switch切换后,Formik 会更改其状态,然后会更改 Prop valueSwitch .
有人可以帮我解决这个问题吗?

最佳答案

Formik 的 handleChange期望用 React.ChangeEvent 调用.
由于onValueChangeSwitch组件只会被一个 bool 值调用,你需要使用 Formik 的 setFieldValue来处理变化。

<Formik
initialValues={{ switch: false }}
onSubmit={ values => console.log(values) }
>
{props => (
<Switch
value={props.values.switch}
onValueChange={value =>
props.setFieldValue('switch', value)
}
/>
)}
</Formik>

关于reactjs - Formik 使用 React Native Switch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54422594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com