Чтобы избежать повторного вызова useEffect при изменении URL без изменения зависимостей, можно использовать useRef для хранения предыдущего значения URL. Вот пример:
```typescript
const prevUrl = useRef<string>();
useEffect(() => {
prevUrl.current = window.location.href;
}, []);
useEffect(() => {
if (prevUrl.current !== window.location.href) {
// Ваш код здесь
prevUrl.current = window.location.href;
}
}, [window.location.href]);
```
Чтобы настроить вызов хука useEffect так, чтобы dispatch выполнялся только при изменении массива [rolledDices], вы можете создать новую переменную состояния, которая будет хранить историю бросков и обновлять её только при изменении массива [rolledDices]. Например, вы можете создать новый стейт для состояния «История»:
```typescript
const [history, setHistory] = useState([]);
useEffect(() => {
setHistory(prevHistory => [...prevHistory, rolledDices]);
}, [rolledDices]);
```
Теперь вызов dispatch будет происходить только при изменении массива [rolledDices], и не будет выполняться при смене страницы.