Я использую NativeBase в приложении React Native.Я пытаюсь показать компонент Toast на основе ошибки, которая установлена в действии избыточности, потому что это происходит через вызов API.
Это будет показано сейчас, но в настоящее время я получаю предупреждение:
Предупреждение: невозможно обновить во время существующего перехода состояния (например, в render
или в конструкторе другого компонента).Методы рендеринга должны быть чистой функцией реквизита и состояния;побочные эффекты конструктора - это анти-паттерн, но их можно переместить в componentWillMount
.
Я не уверен, как я мог связать это или что я мог сделать, чтобы устранить предупреждение.
Метод визуализации
render() {
return (
<View>
{this.renderError()}
{this.renderForm()}
</View>
);
}
Метод ошибки визуализации
renderError() {
if (this.props.error.type === 'server') {
return (
Toast.show({
text: this.props.error.message,
buttonText: 'Okay',
duration: 5000,
type: 'danger'
})
);
}
}
Версии
Реакция Native: 0.55.4
Собственная база: 2.4.5
Редактировать: Добавление примера для наглядности
Мне нужно показать тост на основе ответа от сервера.Например, если имя пользователя и пароль не совпадают с учетной записью, мне нужно отобразить тост.
Решение:
В итоге я создал ToastService:
import { Toast } from 'native-base';
function showToast(message) {
return (
Toast.show({
text: message,
buttonText: 'Okay',
duration: 5000,
type: 'danger'
})
);
}
export default {
showToast
};
и теперь в своем действии я могу просто позвонить:
ToastService.showToast(data);