在使用MAP函数通过数组循环时,如何更新一个特定元素的状态



在使用映射函数通过数组循环时,如何更新一个特定元素的状态。

<View style={{ marginBottom: 20 }}>
       {
         this.props.addresses.map(addr => {
          return (
            <View style={{ marginRight: 10 }} key={addr.label}>
              <View>
                <Text style={styles.labelTextStyle}>{addr.label}</Text>
              </View>
            </View>
          );
        })
      }
</View>

我将如何更新一个特定元素(addr.label)的状态?

您不能直接在循环中调用SetState

来自React Docs:

setState()不会立即突变。 等待国家过渡。访问此。 方法可能会返回现有值。没有 保证对SetState的通话和呼叫的呼叫同步操作可能 批次获得性能。

您可以做的是

eventHandler(idx, val) {
   var newState = {}
   newState[idx] = val;
   this.setState(newState);
}

在视图中,假设您有一个需要触发处理程序的按钮

<View style={{ marginBottom: 20 }}>
       {
         this.props.addresses.map(addr, idx => {
          return (
            <View style={{ marginRight: 10 }} key={addr.label}>
              <View>
                <Text style={styles.labelTextStyle}>{addr.label}</Text>
                <Button onPress={this.eventHandler.bind(this, idx, addr.label}><Button>
              </View>
            </View>
          );
        })
      }
</View>

您可以做这个

array.map(itam => {
    this.setState({foo: bar});
    return 'something';
});

相关内容

  • 没有找到相关文章

最新更新