Как деструктурировать массив из объекта в Redux React?
Я использую редукцию и хочу деструктурировать teamMembers — массив из имени объекта — teamData , который я получаю от REDUX. Это то, что я сделал ниже. Я просто хочу подтвердить, правильно ли это.
const teamData = useSelector((state) => state.team.teamData);
const { description, heading } = teamData;
const teamMembers = useSelector((state) => state.team.teamData.teamMembers);
1 ответ
По возможности не следует делать
const teamData = useSelector((state) => state.team.teamData);
const { description, heading } = teamData;
Ваш код здесь интересует и , но ваш выбирает весь . Теперь, если есть третье свойство на , скажем, и что
winStreak
изменения, ваш компонент будет перерисован. Потому что это изменение на
winData.teamStreak
вызвало изменение. А ты смотришь
winData
для изменений.
Если вы вместо этого сделаете
const description = useSelector((state) => state.team.teamData.description);
const heading = useSelector((state) => state.team.teamData.heading );
ваш компонент будет перерисовываться только тогда, когда
description
или же
heading
сдача. Потому что теперь вы следите за изменениями этих двух свойств. Неважно, если
teamData
изменяется, важно только, если teamData.description
or
изменение teamData.heading.
Итак, в вашем случае вы должны сделать
const description = useSelector((state) => state.team.teamData.description);
const heading = useSelector((state) => state.team.teamData.heading );
const teamMembers = useSelector((state) => state.team.teamData.teamMembers );
и не используйте здесь никакой деструктуризации. Если вам нужно деструктурировать результат звонка, это, вероятно, означает, что ваш
useSelector
вызов также наблюдает за данными, которые вас не интересуют в первую очередь.