В следующем упрощенном примере пользователь обновляет состояние метки с помощью TextInput, а затем нажимает кнопку «Сохранить» в заголовке. В функции отправки, когда запрашивается состояние метки, она возвращает исходное значение, а не обновленное значение.
Какие изменения необходимо внести в заголовок навигации Правая кнопка, чтобы исправить эту проблему?
Примечание. Когда кнопка «Сохранить» находится в режиме рендеринга, все работает так, как ожидалось, только не в заголовке.
import React, {useState, useLayoutEffect} from 'react';
import { TouchableWithoutFeedback, View, Text, TextInput } from 'react-native';
export default function EditScreen({navigation}){
const [label, setLabel] = useState('');
useLayoutEffect(() => {
navigation.setOptions({
headerRight: () => (
<TouchableWithoutFeedback onPress={submit}>
<Text>Save</Text>
</TouchableWithoutFeedback>
),
});
}, [navigation]);
const submit = () => {
//label doesn't return the updated state here
const data = {label: label}
fetch(....)
}
return(
<View>
<TextInput onChangeText={(text) => setLabel(text) } value={label} />
</View>
)
}