Я не могу воспроизвести проблему на этом конце, но симптом говорит, что ваша страница обновляется, когда вы нажимаете на якорь, потому что вы не препятствует действию по умолчанию. Имейте toggleFPR
вызов preventDefault
на объекте события, который это получает:
toggleFPR(event) {
// ^^^^^ ------------ ***
event.preventDefault(); // ***
console.log('Setting fprActive from ', this.state.fprActive, ' to ', !this.state.fprActive);
this.setState({
fprActive: !this.state.fprActive
});
}
Отдельно: вы нарушаете одно из фундаментальных правил Реакта здесь:
console.log('Setting fprActive from ', this.state.fprActive, ' to ', !this.state.fprActive);
this.setState({
fprActive: !this.state.fprActive
});
При установке состояния на основе существующего состояния, вы должны использовать версию обратного вызова, а не версию, в которую вы передаете объект:
this.setState(({fprActive}) => {
console.log('Setting fprActive from ', fprActive, ' to ', !fprActive);
return {fprActive: !fprActive};
});
Если вы этого не сделаете, он будет работать большую часть времени, а иногда и будет трудно диагностировать.