Прежде всего, вам не нужно делать var r = this;
, поскольку это в if statement
относится к контексту самого обратного вызова, который, поскольку вы используете функцию стрелки, ссылается на контекст компонента React.
к документам:
объекты истории обычно имеют следующие свойства и методы:
blockquote>
- length - (number) Число записей в стеке истории
- action - (string) Текущее действие (PUSH, REPLACE или POP)
- location - (object) Текущее местоположение. Может иметь следующие свойства: pathname - (string) Путь поиска по URL - (строка) Строка запроса URL-адреса hash - (строка) Состояние хэш-фрагмента URL-адреса (строка), определяющее местоположение, которое было предоставлено, например, push (путь, состояние), когда это место было перенесено в стек. Доступно только в истории браузера и памяти.
- push (путь, [состояние]) - (функция) Вставляет новую запись в стек истории
- replace (путь, [состояние]) - (функция) Заменяет текущую запись на стек истории
- go (n) - (функция) Перемещает указатель в стек истории на n записей
- goBack () - (функция) Эквивалент go (-1)
- goForward () - (функция) Эквивалент go (1)
- block (prompt) - (функция) Предотвращает навигация
Таким образом, во время навигации вы можете передать реквизит для объекта истории, например
this.props.history.push({ pathname: '/template', search: '?query=abc', state: { detail: response.data } })
или аналогично для компонента связи
<Link to={{ pathname: '/template', search: '?query=abc', state: { detail: response.data } }}> My Link </Link>
, а затем в компоненте, который отображается с помощью
/template
, вы можете получить доступ к реквизитам, переданным какthis.props.location.state.detail
Также имейте в виду, что при использовании объектов истории или местоположения из реквизита вам необходимо подключить компонент с помощью
withRouter
.В соответствии с Документами:
withRouter
Вы можете получить доступ к свойствам объекта истории и ближайшему совпадению
blockquote><Route>'s
черезwithRouter
h компонент более высокого порядка.withRouter
будет повторно отображать свой компонент каждый раз, когда маршрут изменяется с теми же реквизитами, что и<Route>
renderprops: { match, location, history }
.
С java.util.LinkedList единственный способ ссылаться на места в списке для более эффективной эффективной манипуляции - это итератор, а итераторы являются недействительными, если базовый список изменен чем-то другим, кроме этого итератора.
Если вам действительно нужна эта возможность, вам придется смотреть за пределы API Java или писать сами.
Вы можете делать смешные вещи с помощью List.subList(startIndex, endIndex)
. С этим вы можете очистить весь диапазон в списке «источник». Вы также можете использовать addAll
в подсписке, чтобы вставить новый материал в исходный список.
Если LinkedList
имеет эффективную реализацию для этого - я не знаю.
Если вы удаляете что-то с помощью итератора, вы не можете продолжать использовать тот же самый итератор. Можно сделать
iterator.remove();
iterator.next();
iterator.remove();
iterator.next();
. Это самое близкое, насколько я знаю.