с Flatlists renderItem в реагировать родной, если я использую значение Item в качестве индекса массива, он не определен - PullRequest
1 голос
/ 16 апреля 2020

при доступе к item, переданному _renderItem, я могу использовать значение, подобное этому <Text>{item.item}</Text>, и оно печатает 1, 2, но не может использовать его в качестве индекса для массива, подобного этому <Text>{get(GLOBAL, ['products', 'item.item', 'title'], '')}</Text>, где это возвращает пустая строка.

import get from 'lodash.get';

~~~

_renderItem = (item) => {

    return (
        <View style={{ flex: 1 }}>
            <Text>{item.item}</Text>
            <Text>{get(GLOBAL, ['products', 'item.item', 'title'], '')}</Text>
        </View >
    )
};

render() {
    return (
        <View style={styles.list}>
            <FlatList
                data={[1,2]}
                renderItem={this._renderItem} />
        </View>
    )
}

<Text>{get(GLOBAL, ['products', 'item.item', 'title'], '')}</Text> это выводит '', но <Text>{get(GLOBAL, ['products', '1', 'title'], '')}</Text> выводит как ожидалось.

как они реагируют по-разному, и как я могу использовать значение, переданное в item to _renderItem, в качестве индекса массива?

причина этого в том, что данные переданы FlatList соответствует индексу продукта, из которого я хочу получить определенную информацию.

любая помощь приветствуется!

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Вы хотите использовать значение элемента, и вместо объекта и свойства вы передаете строку в качестве параметра для конкатенации объекта lodash.get. Попробуйте сделать это следующим образом:

_renderItem = (item) => {
    return (
        <View style={{ flex: 1 }}>
            <Text>{item.item}</Text>
            <Text>{get(GLOBAL, ['products', item.item, 'title'], '')}</Text>
        </View >
    )
};

Это на самом деле получит GLOBAL['products'][1]['title'], когда предмет будет 1 вместо GLOBAL['products']['item.item']['title'], который у вас есть сейчас.

0 голосов
/ 17 апреля 2020

Не забудьте: _renderItem = ({item}) не _renderItem = (item)

...