【问题标题】:Objects in React NativeReact Native 中的对象
【发布时间】:2016-10-23 10:03:24
【问题描述】:

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

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 中完成?还是有更好的办法?

【问题讨论】:

  • 您正在使用本地状态来保留当前号码,这很好,直到您想从应用程序的其他组件访问它。您可能需要redux 将它们持久化为全局状态。
  • 你所拥有的根本不是数组,而是一个多维对象。如果您期望其上存在类似数组的行为和方法(如推送、地图等),请注意这一点

标签: react-native


【解决方案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)。

【讨论】:

    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多