Estoy trabajando en una aplicación de control de temperatura con react native. Para obtener el valor de la temperatura, uso el kit de herramientas redux. Mi problema es que mi código para aumentar/disminuir el valor inicial con los reductores no funciona. Obtengo el 20 como valor, pero el uso de controladores para despachar (in/decreaseTemp()) no hace nada. ¿Qué estoy haciendo mal?
Reductores:
import { createSlice } from '@reduxjs/toolkit'; const initialStateValue = { value: 20 } const tempSlice = createSlice({ name: 'temp', initialState: initialStateValue, reducers: { increaseTemp: (state = initialStateValue) => { state = state + 1; }, decreaseTemp: (state = initialStateValue) => { state = state - 1; } } }); export const {increaseTemp, decreaseTemp} = tempSlice.actions; export default tempSlice.reducer;Los manipuladores:
function increaseTempHandler() { dispatch(increaseTemp()); } function decreaseTempHandler() { dispatch(decreaseTemp()); }El problema es una discrepancia entre cómo ha definido su estado
const initialStateValue = { value: 20 };y cómo lo estás usando:
increaseTemp: (state = initialStateValue) => { state = state + 1; }, Si el estado es un objeto que tiene una propiedad de value , entonces su reductor debería devolver un nuevo estado que tenga la propiedad de value actualizada.
p.ej
increaseTemp: (state = initialStateValue) => { const { value } = state; return { ...state, value: value+1 } },