【问题标题】:Function inside Flatlist RenderItem is not fully workingFlatlist RenderItem 内的功能未完全正常工作
【发布时间】:2019-11-11 09:34:06
【问题描述】:

问题是我在函数中看不到 {item.key}。当我在 flatlist 渲染中键入 {item.key} 本身时,它正在工作。但内部函数只有 {item.value} 显示。谁能向我解释为什么会这样?

样本数据

const orderResultJson = [
  {
    key: 'Скачайте приложение по ссылке',
    value: 'https://google.com'
  },
  {
    key: 'Логин',
    value: '879854'
  },
  {
    key: 'Пароль',
    value: '849846'
  },
];

我的功能

function DetailsSection(item){
  return(
    <View>
      <Text>{item.value}</Text>
      <Text>{item.key}+test</Text>
    </View>
  )
}

渲染

render() {
    return (
      <View style={styles.container}>
        <FlatList
          data={orderResultJson}
          renderItem={({item}) => <DetailsSection {...item} />} 
          keyExtractor={item => item.key} 
        />
      </View>
    );
  }

【问题讨论】:

    标签: javascript reactjs react-native react-native-flatlist


    【解决方案1】:

    这里的问题是,当您将 item 解构为单个道具时,道具 key 将被视为内置反应道具 key 而不是将其视为外部道具。

    因此,不要解构,而是按原样传递 item 并按原样从您的函数中访问它。

    我的功能

    function DetailsSection({ item }){
      return(
        <View>
          <Text>{item.value}</Text>
          <Text>{item.key}+test</Text>
        </View>
      )
    }
    

    渲染

    render() {
      return (
        <View style={styles.container}>
          <FlatList
            data={orderResultJson}
            renderItem={({item}) => <DetailsSection item={item} />} 
            keyExtractor={item => item.key} 
          />
        </View>
      );
    }
    

    【讨论】:

    • 谢谢老哥,现在明白了
    【解决方案2】:
    function DetailsSection(props){
      return(
        <View>
          <Text>{props.item.key} + test</Text>
          <Text>{props.item.value}</Text>
        </View>
      )
    }
    

    或者

    这样通过

    <DetailsSection item={item} />
    

    并像这样访问

    function DetailsSection({ item }){
      return(
        <View>
          <Text>{item.value}</Text>
          <Text>{item.key}+test</Text>
        </View>
      )
    }
    

    因为您正在传递提取的值,所以您可以直接访问

    【讨论】:

    猜你喜欢
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2017-05-08
    • 2021-04-07
    相关资源
    最近更新 更多