更改屏幕后反应本机保存按钮状态

2023-12-06

我的应用程序中有 5 个按钮 [“跑步”、“骑行”、“阅读”、“编码”、“牛儿”],当我单击它时,按钮会更改其颜色并在屏幕上显示标题。我正在使用这个库:反应本机选择多个按钮.

假设我单击了“跑步”和“骑行”按钮,这些按钮将突出显示,并且文本将显示在屏幕上,但是当我将屏幕更改为另一个页面并返回到上一个屏幕时,按钮状态将设置回默认值。

下面是我的代码:

const multipleData = ["running", "riding", "reading", "coding", "Niuer"];

export default class SimpleButton extends Component {
  constructor(props) {
    super(props);
    this.state = {
      multipleSelectedDataLimited: []
    };
  }

  render() {
    return (
      <View style={{paddingTop:200}}>
      <Text style={styles.welcome}>
        implement the multiple-select buttons demo by SelectMultipleButton
      </Text>
      <Text style={{ color: 'blue', marginLeft: 10 }}>
      I like {_.join(this.state.multipleSelectedDataLimited, ", ")}
      </Text>
        <View
          style={{
            flexWrap: "wrap",
            flexDirection: "row",
            justifyContent: "center"
          }}
        >
          {multipleData.map(interest => (
            <SelectMultipleButton
              key={interest}
              buttonViewStyle={{
                borderRadius: 10,
                height: 40
              }}
              textStyle={{
                fontSize: 15
              }}
              highLightStyle={{
                borderColor: "gray",
                backgroundColor: "transparent",
                textColor: "gray",
                borderTintColor: 'blue',
                backgroundTintColor: 'blue',
                textTintColor: "white"
              }}
              value={interest}
              selected={this.state.multipleSelectedDataLimited.includes(
                interest
              )}
              singleTap={valueTap =>
                this._singleTapMultipleSelectedButtons_limited(interest)
              }
            />
          ))}
        </View>
      </View>
    );
  }

  _singleTapMultipleSelectedButtons_limited(interest) {
    if (this.state.multipleSelectedDataLimited.includes(interest)) {
      _.remove(this.state.multipleSelectedDataLimited, ele => {
        return ele === interest;
      });
    } else {
      if (this.state.multipleSelectedDataLimited.length < 3)
        this.state.multipleSelectedDataLimited.push(interest);
    }
    this.setState({
      multipleSelectedDataLimited: this.state.multipleSelectedDataLimited
    });
  }
}

const styles = StyleSheet.create({
  welcome: {
    margin: 10,
    marginTop: 30,
    color: "gray"
  }
});

有没有办法即使在更改屏幕后也可以保留按钮的状态?

任何建议或意见将不胜感激。提前致谢!


你能做的最好的事情就是保存你的状态Redux并使用还原-持久化接着就,随即。您还可以使用异步存储。我有类似的场景,我必须维护两个组件之间来回导航的状态,我使用了这样的导航参数:

屏幕A:

this.props.navigation.navigate('ScreenB', {
              onPressScreenAFun: (params) => {
                this.screenAFun(params),
                ButtonState1: true // you can send multiple params
              },
            })

screenAFun = (ButtonState1) => {
 this.setState({buttonState1: ButtonState1})
}

屏幕B:

    screenBFun = (params) => {
       const { onPressScreenAFun, ButtonState1 } = this.props.navigation.navigate.state.params

      onPressScreenAFun(ButtonState1)
      this.props.navigation.goBack()
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改屏幕后反应本机保存按钮状态 的相关文章

随机推荐

  • Google VR Unity Divider、设置和后退按钮隐藏在 v0.9 中

    有谁知道如何禁用最新的 google vr sdk for unity 中的分隔符 设置和后退按钮 我尝试将 NativeUILayerSupported 设置为 false 并将返回值放入旧的 DrawUILayer 中 但它仍然显示 看
  • Web Api - 使用 [FromBody] 属性和 POST 方法时操作参数为空

    我有这个控制器 但我不明白为什么name参数为空 public class DeviceController ApiController HttpPost public void Select FromBody string name pr
  • 全透明OpenGL模型

    解释一下我做错了什么 我已将 3D 模型加载到自编码的 opengl 渲染 v 3 3 中 并尝试使用顶点着色器使其像 xray 效果一样透明 version 330 attribute vec3 coord3d attribute vec
  • Python 通过请求更改 Instagram 个人资料图片

    我正在尝试使用 python post 请求更改我的 Instagram 个人资料图片 但它没有改变 我没有收到任何错误 在回复中 它说他们已经更改了它 但是更改为白色 Instagram 人物照片 而不是我选择的照片 request ur
  • 为什么不能从 ArrayAdapter 添加/删除项目?

    我正在使用一个ArrayAdapter
  • SQL Server 长查询中的表锁 - 解决方案:NoLock?

    我的应用程序中的报告运行一个需要 5 15 秒的查询 仅限于将返回的行数 该查询对我的应用程序的几乎所有主表 客户 销售 单位等 有 8 个联接 一个小工具向我展示 此时 所有这 8 个表都被共享表锁锁定 也就是说 此时不会进行任何更新操作
  • targetSdkVersion 26 在崩溃报告中给出异常

    根据到 2018 年 11 月将目标 SDK 版本更新到 26 的要求 我在几个月前尝试更新我的 gradle 文件并发布了我的应用程序的新版本 将目标 sdk 和编译 sdk 版本更新为 26 从 23 之后 一天之内 我开始在 Fire
  • 未找到 Gradle DSL 方法:“classpath()”

    项目 FeedBack 可能使用不包含该方法的 Android Gradle 插件版本 例如 在 1 1 0 中添加了 testCompile 修复插件版本并同步项目 项目 FeedBack 可能使用不包含该方法的 Gradle 版本 打开
  • 请指出我学习异步Javascript过程中的错误

    我是 Javascript 和异步编程的新手 有些事情让我感到困惑 请指出我学习中的错误 异步函数的回调被放入消息队列中 通过事件循环执行 异步执行是非阻塞的 完成 通过事件循环 功能类似于setTimeout是异步的 异步函数是阻塞的 只
  • 创建不可移动类型的 std::vector

    我有一个std vector named args 我不知道编译时向量的大小 和不可移动类型NonMoveable 我想创建一个与 args 大小相同的向量 因此它等于 NonMovable args 0 additional arg No
  • git log 并在裸仓库上显示

    我在家里本地网络的文件服务器上创建了一个裸存储库 之后 我将现有存储库的一个分支从我的桌面电脑推送到这个新的远程存储库 推送工作完美 似乎所有数据都已到达 gitbranch va 给了我正确的数据 但我无法在裸存储库上使用 git log
  • 某些 bash 脚本中使用的“function”关键字是什么?

    例如 Bash Prog 简介 HOWTO function foo 我在以下位置进行搜索查询info bash并查看 POSIX 的相关章节function关键字但没有找到 What is function某些 bash 脚本中使用的关键
  • Kubernetes 滚动更新是否可以从服务负载均衡器中优雅地删除 Pod

    负载均衡器后面的主机滚动更新的标准做法是优雅地停止轮换主机 这可以通过将主机标记为 不健康 并确保主机不再接收来自负载均衡器的请求来完成 Kubernetes 是否会对由 ReplicationController 管理并为 LoadBal
  • Angular 中的变更检测 API 底层架构

    我正在阅读这篇文章 并对更改检测操作的工作原理感到困惑 https vsavkin com change detection in angular 2 4f216b855d4c 这个概念 Angular 表示它不会进行脏检查 也没有像 An
  • 如何通过 ingress 在 GKE 中启用 cors

    我尝试使用以下注释启用带有入口的 cors 但没有成功 kubernetes io ingress class nginx nginx ingress kubernetes io enable cors true 正确的注释是ingress
  • 是否有一棵树可以对对象进行排序?

    我编写了一个红黑二叉统计树 以获得与红黑树中其他对象可比较的任意对象的排名 我想知道是否有一个 API 类提供相同的功能 如果给定一个等级 该类有一个函数可以返回树中该等级的对象 那就太好了 请注意 红黑 BST 允许在 log n 时间内
  • 将 Unicode 代码点转换为 UTF-8 和 UTF-32

    我想不出一种方法来删除前导零 我的目标是for循环创建每个数字的 UTF 8 和 UTF 32 版本 例如 对于 UTF 8 我不需要删除前导零吗 有谁有解决方案来解决这个问题 基本上我要问的是 有人有一个简单的解决方案将 Unicode
  • 空 XML 分离出默认 XML

    我有一个传递给 XSL 的 XML 它提供了标准输出 根据某些情况 有时我可能会将 XML 设为空 如果我们有空 XML 并获取 XSL 中的标准或默认输出 有什么办法吗 如果我们有空 XML 有什么办法吗 并获取标准或默认值 放入 XSL
  • Java(Eclim + Vim)“system.out.print”不工作

    我是 Java 编程新手 今天在摆弄 eclim 和 vim 时 我发现 System out println 功能不起作用 class apples public static void main String args double t
  • 更改屏幕后反应本机保存按钮状态

    我的应用程序中有 5 个按钮 跑步 骑行 阅读 编码 牛儿 当我单击它时 按钮会更改其颜色并在屏幕上显示标题 我正在使用这个库 反应本机选择多个按钮 假设我单击了 跑步 和 骑行 按钮 这些按钮将突出显示 并且文本将显示在屏幕上 但是当我将