#react-native #graphql #react-navigation
#react-native #graphql #реакция-навигация
Вопрос:
я использую подписку graphql для получения обновлений при создании нового пользователя, все работает нормально, я получаю обновления, но я не могу обновить счетчик уведомлений в заголовке навигации с помощью метода render.
class ContactsList extends Component {
static navigationOptions = ({ navigation }) => {
return {
headerRight: (
<View style={{ flexDirection: 'row' }}>
<View style={{ marginEnd: 5 }}>
<Icon.Button
name="bell"
backgroundColor="#3b5998"
onPress={() => alert('Bell Pressed!!')}>
**//i want update the count here when new contact is created**
</Icon.Button>
</View>
</View>
),
};
};
render() {
return (
<View>
<Subscription
subscription={NEW_NOTIFICATION_SUBSCRIPTION}
variables={{ token: this.state.golbalDashboardToken }} >
{({ data, loading }) => {
if (loading) {
// alert('Loading Subcription');
return <Text>Loading Subscription</Text>
}
if (data) {
**// when new contact is created i will receive the data her**
}
}
}
</Subscription>
</View
);
}
}
Я получу данные внутри тега Subscription при создании нового пользователя
Ответ №1:
Попробуйте это:
if (data amp;amp; data !== oldData) {
**// when new contact is created i will receive the data her**
this.props.navigation.setParams({ data }); // << this
}
в navigationOptions
<Icon.Button
name="bell"
backgroundColor="#3b5998"
onPress={() => alert('Bell Pressed!!')}>
**//i want update the count here when new contact is created**
const newData = navigation.getParam('data'); // this
</Icon.Button>
Комментарии:
1. Компонент повторно отображает бесконечно.
2. убедитесь, что вы проверили, что ваше новое значение
data
не равноold data
, и вызывайте setParam только тогда, когда доступны новые данные… он отображает бесконечно , потому что if (data) всегда имеет значение true .. проверьте редактирование, пожалуйста3. потрясающе, что он работает сейчас, после того, как я внес небольшое изменение, т. е. используя const newData = navigation.getParam(‘data’); вызываем вне метода возврата.