通过在Redux中使用AsyncStorage保存布尔数据

时间:2018-11-11 10:05:13

标签: javascript java android ios react-native

我想在单击按钮时将状态设置为“ true”或“ false”,并在与redux的react native中使用AsyncStorage进行保存。 我做对了吗?请帮我修复它。

import { AsyncStorage } from "react-native";
import {
  START_TOOLTIP_BUDGET,
  STOP_TOOLTIP_BUDGET
} from "../actions/ActionTypes";

const INIT_STATE = true;
export default (state = INIT_STATE, action) => {
  switch (action.type) {
    case START_TOOLTIP_BUDGET:
      AsyncStorage.setItem("INIT_STATE", JSON.stringify(true));
      return INIT_STATE;

    case STOP_TOOLTIP_BUDGET:
      AsyncStorage.setItem("INIT_STATE", JSON.stringify(false));
      return INIT_STATE;
    default:
      return state;
  }
};

1 个答案:

答案 0 :(得分:1)

是的,您可以正确地进行操作,但是如果您返回INIT_STATE true或false,则可以获取当前类的当前数据。否则,您每次都返回true。

export default (state = INIT_STATE, action) => {
  switch (action.type) {
    case START_TOOLTIP_BUDGET:
      AsyncStorage.setItem("INIT_STATE", JSON.stringify(true));
      return true;

    case STOP_TOOLTIP_BUDGET:
      AsyncStorage.setItem("INIT_STATE", JSON.stringify(false));
      return false;
    default:
      return state;
  }
};

然后从类中单击按钮。而且您还可以获得AsyncStorage项目;

AsyncStorage.getItem("INIT_STATE")
    .then(req => JSON.parse(req))
    .then(data => {
        if (data !== null) { 
          console.log(data); // true or false 
        }
    }).done();