Я перехожу на другую страницу, где передаю такие данные:
this.props.history.push({
pathname: "/someotherpage",
state: { somedata: somedata }
});
Теперь на /someotherpage у меня есть условие в моем методе render(), чтобы показать компонент в зависимости от того, не является ли this.props.location.state нулевым.
{this.props.location.state && (
<SomeComponent>
{this.props.location.state.somedata}
</SomeComponent>
)}
Работает. Однако, когда я обновляю страницу, <SomeComponent> все еще отображается, поскольку он все еще хранит this.props.location.state.somedata, даже если я обновляюсь. Как мне сбросить this.props.location.state до нуля при обновлении страницы? (Кажется, это ясно, когда вы уходите, только при обновлении он сохраняется.)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуй это:
history.replace('', null);
у меня не вышло, у меня эта ошибка Property 'replace' does not exist on type 'History'
Проверьте свой импорт. Я думаю, вы импортируете неправильный модуль истории. Это должен быть импорт {History} из 'истории';
history.replace('' null); У меня не работает. Он перенаправляет меня на / Но использование history.replace(location.pathname, null); работает нормально!
В качестве обходного пути вы можете добавить функцию, как показано ниже, чтобы отличать обновить страницу от this.props.history.push, как показано ниже:
isPageRefreshed() {
return window.performance && performance.navigation.type === 1;
}
Затем, когда вы хотите проверить, обновляется ли он или перенаправляется с другой страницы, вы можете использовать вот так
{!this.isPageRefreshed && this.props.location.state && (
<SomeComponent>
{this.props.location.state.somedata}
</SomeComponent>
)}
Используйте window.history.replaceState(null, ''), чтобы очистить состояние местоположения после использования значения.
Веб-документы MDN: History.replaceState ()
The History.replaceState() method modifies the current history entry, replacing it with the stateObj, title, and URL passed in the method parameters
Syntax: history.replaceState(stateObj, title, [url]);
Заголовок можно оставить пустым, а URL указывать необязательно.
Суть в том, что Это не вызывает повторного обновления.
Проблема с этим подходом заключается в том, что он стирает всю историю и влияет на кнопку «Вперед». Есть еще идеи, как это исправить?
все работает, спасибо! это должен быть правильный ответ ?
history.replace('' null); У меня не работает. Он перенаправляет меня на / Но использование history.replace(location.pathname, null); работает нормально!
Достаточно близко .. Я использовал history.replace ('/ currentroute', null);