Как сделать что-то после изменения состояния Redux? - PullRequest
3 голосов
/ 05 февраля 2020

Я хочу запустить takePic() функцию после применения состояния Redux. Предположим, как показано ниже:

this.props.setCameraState({
    foo: bar,
    foo2: bar
}).then(() => takePic());

Я делаю это с помощью функции локального состояния, как показано ниже:

this.setState({
    foo: bar,
    foo2: bar,
}, async () => takePic());

Но я не могу понять, как это сделать в Redux.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Вы можете создать асинхронное действие c как

export const setCameraState = () => async (dispatch) => {
    // Write your action logic here
};

И затем во время вызова сделать

this.props.setCameraState({
    foo: bar,
    foo2: bar
}).then(() => takePic());

Или

await this.props.setCameraState({
    foo: bar,
    foo2: bar
});

takePic();

Другим способом, которым вы можете попробуйте использовать componentDidUpdate hook

componentDidUpdate(prevProps) {
    if(prevProps.foo !== this.props.foo || prevProps.foo2 !== this.props.foo2) {
        takePic();
    }
}
0 голосов
/ 05 февраля 2020

Вы можете использовать useEffect, чтобы проверить обновленное глобальное состояние и выполнить побочный эффект, который в вашем случае вызывает takePic().

Итак, предполагая, что ваш излишек равен connect ed для Ваш компонент:

const MyComponent = ({ foo, foo2 }) => {
  useEffect(() => {
    takePic();
  }, [foo, bar]);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...