реагировать на сокращение с использованием useSelector несколько раз в приложении - PullRequest
1 голос
/ 18 июня 2020

Здравствуйте, я несколько раз использую селектор в своем приложении. Могу ли я написать код один раз, а затем импортировать селектор? Я думал написать собственный хук, но думаю, что в этом нет необходимости. Вот мой селектор:

const county = useSelector((state)=>{
    const id = state.user.id
    const name = state.user.name
    return state.users.filter((user) => user.name === name)[0].county
})

Было бы неплохо, если бы у меня было что-то вроде этого:

import {countySelector} from 'selectors'
const county = useSelector(countySelector)

Ответы [ 2 ]

4 голосов
/ 18 июня 2020

Вы можете передать функцию стрелки в useSelector

export const countySelector = state => {
    const id = state.user.id;
    const name = state.user.name;
    return state.users.find(user => user.name === name).county;
};

// Usage
import { countySelector } from 'selectors';
const county = useSelector(countySelector);

Или создать собственный крючок

const useCounty = () => {
    return useSelector(state => {
        const id = state.user.id;
        const name = state.user.name;
        return state.users.find(user => user.name === name).county;
    });
};

export default useCounty;

// Usage
import useCounty from 'useCounty';
const county = useCounty();
2 голосов
/ 18 июня 2020

Стандартный redux шаблон поставляется с набором инструментов redux и с повторным выбором . Здесь - несколько примеров создания составных мемоизированных селекторов.

...