React Native中的对象

时间:2016-10-23 10:03:24

标签: react-native

我有一段文字,每次点击它时,文字都会变为对象中的下一个项目。我还需要一个说文本的名字,所以我使用了这样的多维数组:

let texts = {
  0:{
    "name" : "Bob",
    "text" : "Hello, this is a text",
  },
  1:{
    "name" : "Peter",
    "text" : "Hey there.",
  },
};

这是我的状态:

this.state = {
  textNumber: 0,
};

这就是我在onPress上调用的函数:

nextScene = () => {
      if(this.state.textNumber >= Object.keys(texts).length-1){

      }
      else{
        this.setState({textNumber: this.state.textNumber+1})
      }
    };

它完全按照我想要的方式工作。但我的问题是:这是应该在React Native中完成的吗?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

你可能想要一个对象数组:

let texts = [
  {
    "name" : "Bob",
    "text" : "Hello, this is a text",
  },
  {
    "name" : "Peter",
    "text" : "Hey there.",
  },
];

然后你可以这样做:

if(this.state.textNumber < this.state.texts.length-1) {
  this.setState({textNumber: this.state.textNumber+1});
}

如果您想要循环,还可以执行以下操作:

this.setState({textNumber: this.state.textNumber+1 % this.state.texts.length});

关于您的问题,在React Native中执行此操作之间没有区别。这只是JS。

保持状态(React或RN)都可以。如果您想要更精彩的解决方案,可以编写HOC来管理组件的状态(例如参见recompose)。