react-navigation stack中使用Keyboar

2020-06-29  本文已影响0人  Jr_38e7

在react-navigation中,如果直接使用KeyboardAvoidingView,由于顶部的header问题需要设置keyboardVerticalOffset的值(例如,iOS为64,Android为54 + StatusBar.currentHeight,iPhone X,iPad,水平iPhone X的特殊情况...),不然需要自定义Header,这里提供一种方案,由页面内引入Header:

import { Header } from '@react-navigation/stack'

export default ({navigation}) => {
    const [headerProps, setHeaderProps] = useState(null)
    useEffect(() => {
        /* 利用navigation的header属性,把header的props传给页面的Header组件*/
        navigation.setOptions({
            header: (props) => {
                setHeaderProps(props)
                return null
            },
        })
    })

    return (
        <View style={{ flex: 1 }}>
            {headerProps && <Header {...headerProps} />}
            <View style={{ flex: 1 }}></View>
            <KeyboardAvoidingView behavior="padding" >
                {/* TextInput... */}
            </KeyboardAvoidingView>
        </View>
    )
}
上一篇下一篇

猜你喜欢

热点阅读