我正在使用redux,并且在使用功能组件的屏幕之一上,即使在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)
答案 0 :(得分:0)
我认为您在redux状态和组件本地状态之间感到困惑。在这里,您通过调用useState
函数创建了一个局部状态变量(dadosCarrinho),可以使用setDadosCarrinho
更改此值。
借助redux,您可以按操作更新商店信息,redux文档中的操作为:
操作是从您的计算机发送数据的信息有效载荷 应用程序到您的商店。它们是唯一的信息来源 商店。您可以使用store.dispatch()将它们发送到商店。
然后您应该使用reducer更改应用程序状态
Reducers指定应用程序的状态如何响应 发送到商店的操作。请记住,动作只描述什么 发生了,但是请不要描述应用程序状态的变化。
您可以通过在您指定操作的连接函数中添加第二个参数来调度组件中的操作
export default connect(state => ({produtosCarrinho: state.carrinhoCompra.dadosCarrinho}), { /* add your actions here */ })(Carrinho)