【问题标题】:iteratively change properties and states of components迭代地改变组件的属性和状态
【发布时间】:2017-09-08 23:01:20
【问题描述】:

我正在尝试将 HTML5 应用程序移植到 React Native。在我的原始应用程序中,我有 24 个 DOM 元素,每个元素都有自定义长度、maxLength、描述、isActive 和颜色属性。我会使用 jQuery.each();遍历元素并使用构造函数来存储每个元素的索引和 jQuery 对象。

构造函数具有各种原型函数来获取/设置属性以及相关的样式更改。有些函数会改变相邻元素的属性和样式,我会使用构造对象数组来访问这些函数。

所以我的问题。如何在 React Native 中遵循类似的模式?具体来说,如何将“元素”添加到数组中,然后遍历该数组,对选定元素进行视觉/数据更改?

一个例子:

jQuery

$(document).ready(function(){
    var activities = [];
    Activity = function (idx, ele) {
        this.idx = idx;
        this.ele = ele;
    }
    $('.activity').each(function(index){
        activities[index] = new Activity(index, $(this));
    });
});

【问题讨论】:

  • 相当广泛。一些代码示例会有所帮助:)

标签: javascript jquery arrays react-native


【解决方案1】:

您可以在数组中定义属性,然后对其进行迭代。要更改它们,请操作数组。也许把它放入状态。

const elements = [
  {
    style: {
      color: 'red',
    },
    text: 'first',
  },
  {
    style: {
      color: 'green',
    },
    text: 'second',
  },
  {
    style: {
      color: 'blue',
    },
    text: 'third',
  },
]

elements.map((element) =>
  <View style={element.style}>
    <Text>{element.text}</Text>
  </View>
)

【讨论】:

  • 对于一个定义了元素数量的应用,地图功能真的有必要吗?我可以看到这个答案是类似的:stackoverflow.com/questions/37446029/…
  • 你想遍历数组,map有什么不好的?元素应仅在您对其数据进行更改时更新,而不是在每次地图调用时更新。
  • 很好。我想我现在明白它是如何工作的了。 map 函数中的 jsx 仅在值发生变化时才发生变化。那么地图必须在哪里更新渲染的内容呢?我正在更改我的环境以允许终端日志,以便我可以测试。
  • 随意把它直接放到你的渲染函数中:)
猜你喜欢
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 2017-07-10
  • 2014-05-08
相关资源
最近更新 更多