UNPKG

@uiw/react-native

Version:
60 lines 1.44 kB
import React, { useContext } from 'react'; import { View } from 'react-native'; import { Context } from './hooks/context'; import Label from './comps/label'; import Tip from './comps/tip'; import Container from './comps/container'; import styles from './styles'; const formchildItem = props => { const { field, name = '', required = false, validate, children } = props; const { mode, innerMethods: { store = {}, updateStore, innerValidate }, watch, changeValidate } = useContext(Context); const change = (field, value) => { updateStore?.({ store: { ...store, [field]: value } }); watch && watch[field]?.(value); }; const _renderComponent = children => { return React.isValidElement(children) ? React.cloneElement(children, { value: store[field], onChange: value => { change(field, value); if (changeValidate) innerValidate(); } }) : null; }; return <Container mode={mode}> <View style={styles.form_items_container}> <View style={[styles.form_items, styles.border_none]}> <Label v={{ name: name, required: required }} /> {_renderComponent(children)} <Tip v={{ validate: validate, field: field }} /> </View> </View> </Container>; }; export default formchildItem;