Я пытаюсь создать кнопку которая будет перемешивать плейлист(массив объектов), а по второму клику возвращать не перемешанный плейлист. Почему-то setOldPlaylist не сохраняет предыдущее состояние. Я полагаю, проблема с обновлением состояния.
import React, { useState } from 'react'
import shuffleTracks from './shuffle'
import { connect } from "react-redux";
function ShuffleButton({ setPlaylist, playlist, trackId }) {
const [oldPlaylist, setOldPlaylist] = useState([]);
const [shuffle, setShuffle] = useState(false);
const handleShuffle = () => {
if (shuffle) {
setPlaylist(oldPlaylist);
setShuffle(!shuffle);
} else {
setOldPlaylist(playlist);
setPlaylist(shuffleTracks(playlist, trackId));
setShuffle(!shuffle);
}
}
return (
<button onClick={handleShuffle} >
<Shuffle />
</button>
)
}
const mapStateToProps = (state) => {
return {
playlist: state.playlist.playlist,
trackId: state.player.trackId,
};
};
const mapDispatchToProps = (dispatch) => {
return {
setPlaylist: (tmp) => dispatch(setPlaylist(tmp)),
};
};
export default connect(mapStateToProps, mapDispatchToProps)(ShuffleButton);
Если в setOldPlaylist передавать любой другой элемент (объект, массив или переменную) помимо playlist, то код работает исправно. Буду благодарен если поможете или предложите более элегантное решение.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Встретился с такой проблемой - не могу верно указать путь до второй страницы,самый простой шаг(выйти из той папки, где лежит основная страница...
помогите пожалуйста с валидацией, не бейте ногами, не так давно начал заниматься вебом, не могу понять как мне проверить что форма полностью...
Как отфильтрировать или отсортировать массив дат, чтобы в результате были даты, у которых количество минут равно 15?
есть у меня такое колесо, как отменить повторное нажатие кнопки ? у меня на данный момент если колесо остановилось, его можно ещё раз крутить