GraphQL в сочетании с FlatList: изменение onViewableItemsChanged на лету не поддерживается - PullRequest
0 голосов
/ 06 февраля 2020

Я продолжаю получать эту ошибку: Changing onViewableItemsChanged on the fly is not supported

Я следовал за документацией и удостоверился, что предоставил конфигурацию видимости и onViewableItemsChanged; Наряду с этим я также включил их в конструктор класса

Это мой компонент:

class Messages extends Component {
    constructor(properties) {
        super(properties);
        this.onViewableItemsChanged.bind(this)
        this.viewabilityConfig = {
            viewAreaCoveragePercentThreshold: 95
        }
    }
    state = {
        commentsToUpdateAsRead: [],
        unreadComments: []
    }

    onViewableItemsChanged = ({viewableItems, changed}, commentWasViewed) => {
        let commentIdsToUpdate = viewableItems.map(v=>v.item._id)

        let currentIdsWithNewIds = [...commentIdsToUpdate, ...this.state.commentsToUpdateAsRead]

        currentIdsWithNewIds = [...new Set(currentIdsWithNewIds)]
        this.setState({ commentsToUpdateAsRead: currentIdsWithNewIds })

        commentWasViewed()
    }

    componentWillMount(){
        this.setState({ unreadComments: this.props.unreadComments })
    }

    render(){
        return(
            <Mutation mutation={COMMENT_WAS_VIEWED} variables={{ id: this.state.commentsToUpdateAsRead }}>
                {(commentWasViewed, { loading, error, data }) => {
                    // {data && console.log(data)}
                    return <View
                        style={{
                            flex: 1,
                            backgroundColor: 'white'
                        }}
                    >
                        <ScrollView>
                            <SafeAreaView>

                                <FlatList
                                    data={this.state.unreadComments}
                                    renderItem={({ item }) => (
                                            <MessageItem
                                                content={item.content}
                                                user_name={item.user_name}
                                                createdAt={item.createdAt}
                                            />
                                        )
                                    }
                                    onViewableItemsChanged={(e) => {
                                        this.onViewableItemsChanged(e,commentWasViewed)
                                    }}
                                    viewabilityConfig={this.viewabilityConfig}
                                />
                            </SafeAreaView>
                        </ScrollView>
                    </View>
                }}
            </Mutation>
        )
    }
}

Есть ли что-то очевидное, чего мне не хватает onViewableItemsChanged, который заставляет ошибку продолжать бросать?

...