Обновление компонента реагирует на собственный статус - PullRequest
0 голосов
/ 22 апреля 2020

Я использую избыточность, и на одном из моих экранов, использующих функциональный компонент, я не могу обновить состояние экрана, даже используемого в useEffect. У кого-нибудь есть альтернатива?

ниже, часть используемого кода:

const Carrinho = ({ produtosCarrinho }) => {

    const [dadosCarrinho, setDadosCarrinho] = useState(produtosCarrinho)

    useEffect(() => {
        calcularSubTotal()

      },[produtosCarrinho]);

    return (
        <View style={styles.container}>

        </View>
    )
}

export default connect(state => ({produtosCarrinho: state.carrinhoCompra.dadosCarrinho}))(Carrinho)

1 Ответ

0 голосов
/ 22 апреля 2020

Я думаю, что у вас путаница между состоянием редукса и локальным состоянием компонента. Здесь вы создали локальную переменную состояния (dadosCarrinho), вызвав функцию useState, вы можете изменить это значение с помощью setDadosCarrinho.

С помощью Redux вы можете обновить информацию о хранилище с помощью действий, действия из документов Dux :

Действия - это полезные данные, которые отправляют данные из вашего приложения в ваш магазин. Они являются единственным источником информации для магазина. Вы отправляете их в хранилище с помощью store.dispatch ().

Затем следует использовать редукторы для изменения состояния приложения

Редукторы определяют, как изменяется состояние приложения в ответ на Действия отправлены в магазин. Помните, что действия только описывают то, что произошло, но не описывают, как изменяется состояние приложения.

Вы можете отправлять действия из своего компонента, добавив второй параметр в функцию соединения, где вы указываете свои действия

export default connect(state => ({produtosCarrinho: state.carrinhoCompra.dadosCarrinho}), { /* add your actions here */ })(Carrinho)

Документы Redux действительно очень понятны с базовыми c примерами

...