【问题标题】:React Native state with arrays用数组反应原生状态
【发布时间】:2016-01-13 08:22:44
【问题描述】:

我正在使用带状态的数组,但我不确定为什么我可以使用数组获取但不能设置。我有:

      getInitialState: function() {
    return {
      stored: {'ok':1,'maybe':1,'then':1}
    };
  },

我可以像这样得到数组项没问题:

        <Text style={styles.text}>
           {this.state.stored['ok']==1 ? "yes" : ""}
        </Text>

但奇怪的是尝试设置状态不允许引用数组项并引发错误:

  this.setState({stored['ok']: 1});

【问题讨论】:

  • 还在寻找答案 - 有人吗?

标签: ios arrays react-native state


【解决方案1】:

我认为如果您将整个哈希替换为新哈希,它会起作用。

试试这样的:

var newHash = this.state.stored;
newHash['ok'] = 1;
this.setState({ stored: newHash });

但最好不要在状态中存储哈希。

【讨论】:

  • 是的,确实有效,谢谢。为什么它不像我那样工作呢?必须这样做似乎很奇怪。
  • 对象的键不会是数组
  • 但是在初始化它和检索它时它作为一个数组工作。唯一不是在设置时。
  • 嗯,您是否意识到您所写的内容实际上并没有做任何事情。目标是更新 this.state.stored['ok'] 的值,但您只是将 this.state.stored 的当前值分配给 newhash,然后将其重新分配给存储。它实际上并没有改变任何东西。赋值后尝试访问数组只会返回 undefined。
  • 基本上你只是将值 1 分配给存储而不是存储['ok']。您编写的相同代码可以这样写在一行中: this.setState({ stored: this.state.stored['ok]});但它显然也不起作用。
猜你喜欢
  • 2019-04-29
  • 2021-03-23
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多