javascript - 无法在 React Native 中显示数组

标签 javascript arrays react-native

当我按<TouchableOpacity>时按钮,我希望将值“abc”附加到数组 selectedTags,然后 <Text> {this.list()} </Text>将打印出我的数组。
但现在当我按下按钮时,没有任何显示。

有人知道我的代码有什么问题吗?

export default class App extends Component {
      constructor(props) {
        super(props);
        this.state = {
          selectedTags: []
        }
  }

  list() {
  return this.state.selectedTags.map(function(tags, i){
    return(
      <View key={i}>
        <Text>{tags.name}</Text>
      </View>
    );
  });
}

  render() {
    return (
      <View style={styles.container}>
        <TouchableOpacity  onPress={() => this.state.selectedTags.push('abc')} key = {1} style={styles.buttonContainer}>
              <Text style={styles.buttonText}> Button </Text>
         </TouchableOpacity>

          <Text> {this.list()} </Text>
      </View>
    );
  }
}

最佳答案

这是因为您从未调用 setState,这会触发组件的重新渲染。

而不是使用:

onPress={() => this.state.selectedTags.push('abc')}

尝试:

onPress={() => this.setState({selectedTags: this.state.selectedTags.concat('abc')})}

关于javascript - 无法在 React Native 中显示数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47055284/

相关文章:

javascript - 将字符串转换为 float /数字以在 javascript 中进行数值运算

javascript - AngularJs:基于值的不同占位符

javascript - 单击按钮滚动到带有类的 div

arrays - Swift 枚举作为数组的索引

java - 增强的 For 循环 - 对象数组

arrays - Perl:使用 while 将文件加载到哈希中

javascript - 'child_added' 和 'value' firebase 之间的区别?

javascript - react native中常用的js模块

css - 如何在 React Native 中创建文本边框?

ios - iOS 上的 React-NativescrollToEnd 的行为与手动滚动不同,将项目置于底部